From d144eedd29c30fb0f671ef06efbcbc2cc6a37a11 Mon Sep 17 00:00:00 2001 From: status-im-auto Date: Thu, 26 Mar 2026 14:46:10 +0000 Subject: [PATCH] Update documentation --- 404.html | 6 +-- assets/js/0e80fcdd.3510cd76.js | 1 - assets/js/0e80fcdd.61da2355.js | 1 + assets/js/10d61b1b.6a0ae099.js | 1 - assets/js/10d61b1b.9f9541b1.js | 1 + .../js/1df93b7f.645b59f7.js | 2 +- assets/js/22dd74f7.cafa2b28.js | 1 + assets/js/22dd74f7.ef58de76.js | 1 - assets/js/2d4f555c.1f03edd3.js | 1 + assets/js/2d4f555c.d4b6f9c2.js | 1 - assets/js/2dfac737.bac68338.js | 1 - assets/js/2dfac737.e5eda046.js | 1 + assets/js/4b7a78ae.63e12605.js | 1 + assets/js/4b7a78ae.e799e0ed.js | 1 - assets/js/4e16d657.31613c06.js | 1 - assets/js/4e16d657.54bf4732.js | 1 + assets/js/5057d25c.32fa27f1.js | 1 - assets/js/5057d25c.7b6f3e94.js | 1 + assets/js/5d0af9ca.2c5e617b.js | 1 - assets/js/5d0af9ca.6e487d27.js | 1 + assets/js/66fb3cbd.2c7dc00c.js | 1 + assets/js/66fb3cbd.3713a5eb.js | 1 - assets/js/70943038.33698f5f.js | 1 + assets/js/70943038.e1f5a54c.js | 1 - assets/js/7bd8b57f.5a42dcb1.js | 1 - assets/js/7bd8b57f.e77aad80.js | 1 + assets/js/83ea961b.7c93a6a6.js | 1 + assets/js/83ea961b.e4e25a5e.js | 1 - assets/js/96525a68.21dbe761.js | 1 - assets/js/96525a68.938f8969.js | 1 + assets/js/96f8b763.05af21f1.js | 1 - assets/js/96f8b763.b44a428b.js | 1 + assets/js/99b526a0.17180bc7.js | 1 - assets/js/99b526a0.5e7b5aed.js | 1 + assets/js/9b59a278.4021e773.js | 1 + assets/js/9b59a278.9c7474e6.js | 1 - assets/js/a0677901.51ea76d0.js | 1 - assets/js/a0677901.f133d08b.js | 1 + assets/js/a9f02243.37597082.js | 1 + assets/js/a9f02243.ffcc1fad.js | 1 - assets/js/bdb9291e.104e77fa.js | 1 + assets/js/bdb9291e.6c8e8bd5.js | 1 - assets/js/c50f765a.6af898bd.js | 1 - assets/js/c50f765a.b10cbbdc.js | 1 + assets/js/c5b3c385.392d993e.js | 1 + assets/js/c5b3c385.41927bed.js | 1 - assets/js/c7266e89.132b1209.js | 1 - assets/js/c7266e89.48c52ea8.js | 1 + assets/js/caaf0796.473ff595.js | 1 - assets/js/caaf0796.d1078135.js | 1 + assets/js/cab48688.164d373d.js | 1 + assets/js/cab48688.d1e8cc91.js | 1 - assets/js/cef817d0.1245741a.js | 1 - assets/js/cef817d0.584455c2.js | 1 + assets/js/d11b878a.b99cdc84.js | 1 + assets/js/d11b878a.e36dfc45.js | 1 - ...5728a.625ee315.js => d725728a.6c16beba.js} | 2 +- assets/js/dad64608.5a5c53cd.js | 1 - assets/js/dad64608.f2f57683.js | 1 + assets/js/ddc55e77.12c8b312.js | 1 + assets/js/ddc55e77.5b7401ed.js | 1 - assets/js/eeddb806.30704646.js | 1 + assets/js/eeddb806.9d348bbd.js | 1 - assets/js/f03d57b7.3593b81d.js | 1 + assets/js/f03d57b7.e8da4599.js | 1 - assets/js/f6df0d46.2d4618e9.js | 1 - assets/js/f6df0d46.d67d8510.js | 1 + assets/js/f6ed3658.2288a6d9.js | 1 + assets/js/f6ed3658.ab8fa171.js | 1 - assets/js/fb87d503.04e248af.js | 1 + assets/js/fb87d503.28e1ae12.js | 1 - assets/js/fbc58520.1e047f70.js | 1 + assets/js/fbc58520.29f6ec6e.js | 1 - assets/js/main.7c66aeee.js | 2 - assets/js/main.d8e73f6c.js | 2 + ...CENSE.txt => main.d8e73f6c.js.LICENSE.txt} | 0 assets/js/runtime~main.8e894a7a.js | 1 - assets/js/runtime~main.f8edcfec.js | 1 + .../deploying-contracts/index.html | 11 +++--- .../using-foundry/index.html | 8 ++-- .../using-hardhat/index.html | 8 ++-- .../using-remix/index.html | 8 ++-- .../deploying-contracts/using-se2/index.html | 8 ++-- .../guides/gasless-integration/index.html | 11 +++--- build-for-karma/guides/index.html | 11 +++--- .../guides/reputation-integration/index.html | 11 +++--- build-for-karma/index.html | 11 +++--- build-for-karma/what-to-build/index.html | 11 +++--- build-for-karma/why-status-network/index.html | 11 +++--- build.json | 10 ++--- index.html | 6 +-- ja/404.html | 6 +-- ja/assets/js/0872a126.be79a805.js | 1 - ja/assets/js/0872a126.fbeadac0.js | 1 + ja/assets/js/17c546f4.af91b680.js | 1 - ja/assets/js/17c546f4.daba41f0.js | 1 + ja/assets/js/1dd87f8a.42f9304c.js | 1 - ja/assets/js/1dd87f8a.dec18aad.js | 1 + ...93b7f.e386b54f.js => 1df93b7f.645b59f7.js} | 2 +- ja/assets/js/1fac8d72.00114655.js | 1 - ja/assets/js/1fac8d72.acf29e72.js | 1 + ja/assets/js/2d38b4ea.3b8a4887.js | 1 + ja/assets/js/2d38b4ea.acb3b80d.js | 1 - ...c02c0.ab57f3a2.js => 380c02c0.6724fbdb.js} | 2 +- ja/assets/js/38293535.70c5a794.js | 1 - ja/assets/js/38293535.e1adf479.js | 1 + ja/assets/js/39101fad.5c8df1aa.js | 1 + ja/assets/js/39101fad.d586a433.js | 1 - ja/assets/js/3a2a2ca6.4769eb45.js | 1 - ja/assets/js/3a2a2ca6.d6b0a4ef.js | 1 + ja/assets/js/3a48dd49.0df1a545.js | 1 + ja/assets/js/3a48dd49.ffb5f527.js | 1 - ...f3a1b.ebd894fb.js => 3eef3a1b.fd98732b.js} | 2 +- ja/assets/js/4004d3db.55046119.js | 1 - ja/assets/js/4004d3db.8413ce5d.js | 1 + ja/assets/js/58737118.6700398c.js | 1 - ja/assets/js/58737118.905c86d2.js | 1 + ja/assets/js/58b02c82.8c0025fd.js | 1 - ja/assets/js/58b02c82.b7473595.js | 1 + ja/assets/js/58cbe906.06cc324b.js | 1 + ja/assets/js/58cbe906.a4bf4cf9.js | 1 - ja/assets/js/5a9169ca.71e11d37.js | 1 + ja/assets/js/5a9169ca.c8bbda2e.js | 1 - ja/assets/js/5b6871f6.1074aae9.js | 1 - ja/assets/js/5b6871f6.385a899e.js | 1 + ja/assets/js/6964614d.39bdef89.js | 1 - ja/assets/js/6964614d.d93ec7a3.js | 1 + ja/assets/js/76f7914b.23edfaa4.js | 1 + ja/assets/js/76f7914b.fdbde935.js | 1 - ja/assets/js/7952fbb2.0649a20a.js | 1 - ja/assets/js/7952fbb2.4dbdd784.js | 1 + ja/assets/js/7ca3dfe1.1466feb5.js | 1 + ja/assets/js/7ca3dfe1.53a97838.js | 1 - ja/assets/js/7e5b8e76.6a4ec746.js | 1 - ja/assets/js/7e5b8e76.b04c70a5.js | 1 + ja/assets/js/8165f2f3.badfa68e.js | 1 + ja/assets/js/8165f2f3.d4b28243.js | 1 - ja/assets/js/91f0146a.80afe185.js | 1 + ja/assets/js/91f0146a.917dfb98.js | 1 - ja/assets/js/a3475721.44d09077.js | 1 + ja/assets/js/a3475721.9300f58b.js | 1 - ja/assets/js/abd89008.140ff703.js | 1 - ja/assets/js/abd89008.24471dd8.js | 1 + ...de2f0.1e2052c3.js => b02de2f0.e1c41ac4.js} | 2 +- ja/assets/js/be246233.4012e3d8.js | 1 + ja/assets/js/be246233.a7094783.js | 1 - ...864ab.a5f5400a.js => c2c864ab.a0bdd913.js} | 2 +- ja/assets/js/ca3975d0.075da835.js | 1 + ja/assets/js/ca3975d0.aae76647.js | 1 - ja/assets/js/cf6af3d6.e3e08a0d.js | 1 + ja/assets/js/cf6af3d6.f570e19c.js | 1 - ...000f0.5c86f339.js => d59000f0.3a456ffe.js} | 2 +- ja/assets/js/dd5b2b0c.606e27cd.js | 1 - ja/assets/js/dd5b2b0c.60b4ea75.js | 1 + ja/assets/js/e61373bb.090a18f8.js | 1 - ja/assets/js/e61373bb.44808b05.js | 1 + ja/assets/js/fc1a2222.27e642a0.js | 1 - ja/assets/js/fc1a2222.f0041317.js | 1 + ...048e7.ec85fc39.js => fd9048e7.ef6c4539.js} | 2 +- ja/assets/js/main.13414ec2.js | 2 - ja/assets/js/main.f0fd9375.js | 2 + ...CENSE.txt => main.f0fd9375.js.LICENSE.txt} | 0 ja/assets/js/runtime~main.313d6c0f.js | 1 - ja/assets/js/runtime~main.d85844cd.js | 1 + .../deploying-contracts/index.html | Bin 25298 -> 25264 bytes .../using-foundry/index.html | Bin 69330 -> 69254 bytes .../using-hardhat/index.html | Bin 63700 -> 63522 bytes .../using-remix/index.html | Bin 35505 -> 35221 bytes .../deploying-contracts/using-se2/index.html | Bin 27754 -> 27681 bytes .../guides/gasless-integration/index.html | Bin 110965 -> 110928 bytes ja/build-for-karma/guides/index.html | Bin 20329 -> 20257 bytes .../guides/reputation-integration/index.html | Bin 186708 -> 186711 bytes ja/build-for-karma/index.html | Bin 21075 -> 21052 bytes ja/build-for-karma/what-to-build/index.html | Bin 46483 -> 46478 bytes .../why-status-network/index.html | Bin 30426 -> 30505 bytes ja/index.html | 6 +-- ja/opensearch.xml | 4 +- .../add-status-network/index.html | Bin 28499 -> 28495 bytes .../bridge/bridging-testnet/index.html | Bin 26183 -> 25948 bytes .../contract-addresses/pre-deposit/index.html | Bin 26290 -> 26186 bytes .../testnet-contracts/index.html | Bin 34661 -> 34692 bytes .../contract-addresses/tokens/index.html | Bin 23463 -> 23201 bytes .../gasless-transactions/index.html | Bin 33365 -> 33230 bytes .../general-info/network-details/index.html | Bin 24412 -> 24555 bytes ja/overview/general-info/privacy/index.html | Bin 13295 -> 13218 bytes ja/overview/index.html | Bin 26859 -> 26757 bytes .../introduction/quick-start/index.html | Bin 37141 -> 37063 bytes ja/overview/other/official-links/index.html | Bin 26308 -> 26316 bytes .../tokenomics/economic-model/index.html | Bin 26378 -> 25265 bytes .../tokenomics/karmic-tokenomics/index.html | Bin 31305 -> 33396 bytes .../tokenomics/pre-deposits/index.html | Bin 39617 -> 39526 bytes .../tokenomics/public-funding/index.html | Bin 26818 -> 26943 bytes ja/overview/tokenomics/snt-staking/index.html | Bin 27023 -> 27198 bytes ja/search/index.html | 6 +-- .../block-explorers/index.html | Bin 22823 -> 22750 bytes .../core-infrastructure/bridge/index.html | Bin 26479 -> 26406 bytes .../rpc-endpoints/index.html | Bin 28432 -> 28433 bytes .../testnet-faucets/index.html | Bin 27660 -> 27587 bytes .../ethereum-differences/index.html | Bin 29415 -> 29342 bytes ja/tools/index.html | Bin 23202 -> 24079 bytes ja/tools/infrastructure/index.html | Bin 23533 -> 23460 bytes ja/tools/rpc/json-rpc/index.html | Bin 26146 -> 26073 bytes ja/tools/rpc/running-an-rpc/index.html | Bin 63906 -> 63833 bytes ko/404.html | 6 +-- ko/assets/js/04de74e0.39e08306.js | 1 + ko/assets/js/04de74e0.d8f15c4c.js | 1 - ko/assets/js/0faaaa09.ace05956.js | 1 - ko/assets/js/0faaaa09.baf3954e.js | 1 + ...4d613.b0b479d6.js => 18d4d613.71946c70.js} | 2 +- .../assets/js/1df93b7f.645b59f7.js | 2 +- ...a3fc5.6a9b5c6a.js => 29ba3fc5.7f4438a3.js} | 2 +- ko/assets/js/2df726ed.37f0bf2d.js | 1 - ko/assets/js/2df726ed.40033e58.js | 1 + ko/assets/js/2f507f1a.5b81d9e9.js | 1 - ko/assets/js/2f507f1a.7bf9107d.js | 1 + ko/assets/js/3575842c.776e3ba1.js | 1 - ko/assets/js/3575842c.ef66a689.js | 1 + ko/assets/js/3ab5ca91.0139db95.js | 1 + ko/assets/js/3ab5ca91.bffc5ada.js | 1 - ko/assets/js/4a7b1d31.2da228bb.js | 1 - ko/assets/js/4a7b1d31.c25e2ca6.js | 1 + ko/assets/js/5029d62a.81b2d540.js | 1 + ko/assets/js/5029d62a.cb215504.js | 1 - ko/assets/js/528bdaa1.0ff37514.js | 1 - ko/assets/js/528bdaa1.2a02d722.js | 1 + ko/assets/js/5a7d3f58.654018e5.js | 1 + ko/assets/js/5a7d3f58.6b7eac54.js | 1 - ko/assets/js/5ec14bd2.55062a92.js | 1 - ko/assets/js/5ec14bd2.aa24b6af.js | 1 + ko/assets/js/6cda35cb.32617514.js | 1 - ko/assets/js/6cda35cb.745e8670.js | 1 + ko/assets/js/70481726.ac76a117.js | 1 + ko/assets/js/70481726.e56633b7.js | 1 - ko/assets/js/7af1a67d.5a20c98f.js | 1 + ko/assets/js/7af1a67d.e47aa532.js | 1 - ko/assets/js/7f554d3a.29e1c33a.js | 1 - ko/assets/js/7f554d3a.78761edc.js | 1 + ko/assets/js/84833cb8.43cb3eb5.js | 1 + ko/assets/js/84833cb8.adfbadd9.js | 1 - ko/assets/js/8a4e1544.ae386b41.js | 1 + ko/assets/js/8a4e1544.b3d2d35f.js | 1 - ko/assets/js/8cad4b45.27fd14d8.js | 1 - ko/assets/js/8cad4b45.6a2ed238.js | 1 + ko/assets/js/8ebc3d09.1688360c.js | 1 + ko/assets/js/8ebc3d09.c0dc0164.js | 1 - ko/assets/js/9c22cc29.26d4ccb7.js | 1 - ko/assets/js/9c22cc29.c69b2de3.js | 1 + ko/assets/js/a65d1ba2.8f92d022.js | 1 + ko/assets/js/a65d1ba2.e913dd82.js | 1 - ko/assets/js/ae692ba6.89aa6702.js | 1 + ko/assets/js/ae692ba6.935634e6.js | 1 - ...4c641.bd6674f7.js => afa4c641.0176def1.js} | 2 +- ko/assets/js/b1a05683.4b271c09.js | 1 + ko/assets/js/b1a05683.fd2a090d.js | 1 - ko/assets/js/b5d96a5d.0db6b078.js | 1 + ko/assets/js/b5d96a5d.22712b51.js | 1 - ko/assets/js/b63a2bbb.4c1864b5.js | 1 - ko/assets/js/b63a2bbb.9e38c307.js | 1 + ko/assets/js/ccebf5a8.4f7edddf.js | 1 - ko/assets/js/ccebf5a8.f25aaea6.js | 1 + ko/assets/js/ce755ae8.36a45fb4.js | 1 + ko/assets/js/ce755ae8.69065478.js | 1 - ko/assets/js/d186b8b7.6a8b82ed.js | 1 + ko/assets/js/d186b8b7.91c5baec.js | 1 - ko/assets/js/d32f428a.477cca8b.js | 1 - ko/assets/js/d32f428a.5dfede5c.js | 1 + ko/assets/js/dcaccab5.4ce110d6.js | 1 - ko/assets/js/dcaccab5.f0eb99d9.js | 1 + ko/assets/js/ee51504e.29f4e331.js | 1 - ko/assets/js/ee51504e.8009cced.js | 1 + ko/assets/js/f7b379ae.0fe12166.js | 1 + ko/assets/js/f7b379ae.9dbdff08.js | 1 - ko/assets/js/fbef5dbf.0369bd07.js | 1 + ko/assets/js/fbef5dbf.e93b7f1c.js | 1 - ko/assets/js/main.91ac9c64.js | 2 - ko/assets/js/main.9eecc853.js | 2 + ...CENSE.txt => main.9eecc853.js.LICENSE.txt} | 0 ko/assets/js/runtime~main.09cc7287.js | 1 - ko/assets/js/runtime~main.afcd8af0.js | 1 + .../deploying-contracts/index.html | 15 ++++---- .../using-foundry/index.html | 8 ++-- .../using-hardhat/index.html | 8 ++-- .../using-remix/index.html | 8 ++-- .../deploying-contracts/using-se2/index.html | 8 ++-- .../guides/gasless-integration/index.html | 8 ++-- ko/build-for-karma/guides/index.html | 11 +++--- .../guides/reputation-integration/index.html | 13 ++++--- ko/build-for-karma/index.html | 11 +++--- ko/build-for-karma/what-to-build/index.html | 13 ++++--- .../why-status-network/index.html | 19 ++++----- ko/index.html | 6 +-- ko/opensearch.xml | 4 +- .../add-status-network/index.html | 10 ++--- .../bridge/bridging-testnet/index.html | 10 ++--- .../contract-addresses/pre-deposit/index.html | 11 +++--- .../testnet-contracts/index.html | 36 +++++++++--------- .../contract-addresses/tokens/index.html | 10 ++--- .../gasless-transactions/index.html | 16 ++++---- .../general-info/network-details/index.html | 10 ++--- ko/overview/general-info/privacy/index.html | 6 +-- ko/overview/index.html | 12 +++--- .../introduction/quick-start/index.html | 12 +++--- ko/overview/other/official-links/index.html | 10 ++--- .../tokenomics/economic-model/index.html | 14 +++---- .../tokenomics/karmic-tokenomics/index.html | 19 +++++---- .../tokenomics/pre-deposits/index.html | 17 +++++---- .../tokenomics/public-funding/index.html | 14 +++---- ko/overview/tokenomics/snt-staking/index.html | 10 ++--- ko/search/index.html | 6 +-- .../block-explorers/index.html | 11 +++--- .../core-infrastructure/bridge/index.html | 8 ++-- .../rpc-endpoints/index.html | 8 ++-- .../testnet-faucets/index.html | 8 ++-- .../ethereum-differences/index.html | 13 ++++--- ko/tools/index.html | 18 ++++++--- ko/tools/infrastructure/index.html | 11 +++--- ko/tools/rpc/json-rpc/index.html | 11 +++--- ko/tools/rpc/running-an-rpc/index.html | 11 +++--- opensearch.xml | 4 +- .../add-status-network/index.html | 11 +++--- .../bridge/bridging-testnet/index.html | 8 ++-- .../contract-addresses/pre-deposit/index.html | 11 +++--- .../testnet-contracts/index.html | 8 ++-- .../contract-addresses/tokens/index.html | 8 ++-- .../gasless-transactions/index.html | 11 +++--- .../general-info/network-details/index.html | 8 ++-- overview/general-info/privacy/index.html | 6 +-- overview/index.html | 8 ++-- overview/introduction/quick-start/index.html | 8 ++-- overview/other/official-links/index.html | 8 ++-- overview/tokenomics/economic-model/index.html | 8 ++-- .../tokenomics/karmic-tokenomics/index.html | 11 +++--- overview/tokenomics/pre-deposits/index.html | 11 +++--- overview/tokenomics/public-funding/index.html | 8 ++-- overview/tokenomics/snt-staking/index.html | 8 ++-- search/index.html | 6 +-- .../block-explorers/index.html | 11 +++--- tools/core-infrastructure/bridge/index.html | 11 +++--- .../rpc-endpoints/index.html | 11 +++--- .../testnet-faucets/index.html | 11 +++--- .../ethereum-differences/index.html | 11 +++--- tools/index.html | 11 +++--- tools/infrastructure/index.html | 11 +++--- tools/rpc/json-rpc/index.html | 11 +++--- tools/rpc/running-an-rpc/index.html | 11 +++--- zh/404.html | 6 +-- zh/assets/js/0172eeaa.413078ab.js | 1 - zh/assets/js/0172eeaa.ed5b60c0.js | 1 + zh/assets/js/038e2c56.9943e82d.js | 1 + zh/assets/js/038e2c56.ea720ab5.js | 1 - zh/assets/js/101339e2.46c4b9ad.js | 1 - zh/assets/js/101339e2.abba5819.js | 1 + zh/assets/js/129d4249.12616148.js | 1 + zh/assets/js/129d4249.bed16908.js | 1 - zh/assets/js/1ab2411e.49244b83.js | 1 - zh/assets/js/1ab2411e.a95e3e62.js | 1 + .../assets/js/1df93b7f.645b59f7.js | 2 +- zh/assets/js/1fd47fce.45ea0611.js | 1 + zh/assets/js/1fd47fce.679c730b.js | 1 - zh/assets/js/2f4528f3.531cef45.js | 1 + zh/assets/js/2f4528f3.ca440a15.js | 1 - zh/assets/js/3043a7db.4799d06e.js | 1 + zh/assets/js/3043a7db.b68c8b43.js | 1 - zh/assets/js/3ab3463f.60508bff.js | 1 + zh/assets/js/3ab3463f.6da7f64e.js | 1 - zh/assets/js/41187fc8.4e3ee12f.js | 1 - zh/assets/js/41187fc8.e36a311b.js | 1 + zh/assets/js/42073c06.e52d0f19.js | 1 + zh/assets/js/42073c06.f05d27ea.js | 1 - zh/assets/js/4435df21.3ad4d80f.js | 1 + zh/assets/js/4435df21.4161121d.js | 1 - ...aacd6.4d226883.js => 683aacd6.82b43e06.js} | 2 +- zh/assets/js/75122f20.7a46304d.js | 1 - zh/assets/js/75122f20.9764744f.js | 1 + zh/assets/js/77b8a1df.62e9427c.js | 1 + zh/assets/js/77b8a1df.ffefaf2a.js | 1 - ...e6b78.5abe8e41.js => 89fe6b78.f6cce05e.js} | 2 +- zh/assets/js/8e97385a.072d585d.js | 1 + zh/assets/js/8e97385a.9c59a01a.js | 1 - zh/assets/js/9444fb78.2e1926bb.js | 1 + zh/assets/js/9444fb78.91f3cf5c.js | 1 - zh/assets/js/97e6a127.9646f5ed.js | 1 + zh/assets/js/97e6a127.bacf7619.js | 1 - zh/assets/js/9bcf9f79.294d5d20.js | 1 - zh/assets/js/9bcf9f79.9bfd1934.js | 1 + zh/assets/js/a0abc158.3bdf28d4.js | 1 - zh/assets/js/a0abc158.ae17e6df.js | 1 + zh/assets/js/a406f782.079c1057.js | 1 + zh/assets/js/a406f782.483588eb.js | 1 - ...d7a7e.dc0fa139.js => a6ad7a7e.1410bcb9.js} | 2 +- zh/assets/js/a82944ca.4a8e3e4f.js | 1 - zh/assets/js/a82944ca.4e9a602a.js | 1 + zh/assets/js/b393c6a9.2af6d1e6.js | 1 - zh/assets/js/b393c6a9.af2149fd.js | 1 + ...90344.7a050658.js => b3a90344.8447e347.js} | 2 +- zh/assets/js/b72e7071.19b2b1ff.js | 1 + zh/assets/js/b72e7071.704aa7b6.js | 1 - zh/assets/js/baf9c028.a44b1655.js | 1 + zh/assets/js/baf9c028.cfc17c9f.js | 1 - zh/assets/js/c28c6f9d.42ff3f7f.js | 1 - zh/assets/js/c28c6f9d.892e265d.js | 1 + zh/assets/js/d017210d.b8bcdae0.js | 1 + zh/assets/js/d017210d.eaecb2f7.js | 1 - zh/assets/js/daeb30e0.83dbbcfd.js | 1 - zh/assets/js/daeb30e0.fbf2fad4.js | 1 + zh/assets/js/db158d87.6b3cf7b3.js | 1 - zh/assets/js/db158d87.bbe990d3.js | 1 + zh/assets/js/de1ec0c1.70872403.js | 1 - zh/assets/js/de1ec0c1.84017400.js | 1 + zh/assets/js/e35f8838.0632ea7a.js | 1 - zh/assets/js/e35f8838.4e6828bf.js | 1 + zh/assets/js/f545f562.3524e4b4.js | 1 + zh/assets/js/f545f562.f871c588.js | 1 - ...d7bf2.66dda914.js => fe2d7bf2.e7e4d08d.js} | 2 +- zh/assets/js/main.4e6d4a63.js | 2 - zh/assets/js/main.8c1af504.js | 2 + ...CENSE.txt => main.8c1af504.js.LICENSE.txt} | 0 ...n.2f6c6264.js => runtime~main.8818401f.js} | 2 +- .../deploying-contracts/index.html | 15 ++++---- .../using-foundry/index.html | 8 ++-- .../using-hardhat/index.html | 8 ++-- .../using-remix/index.html | 8 ++-- .../deploying-contracts/using-se2/index.html | 8 ++-- .../guides/gasless-integration/index.html | 8 ++-- zh/build-for-karma/guides/index.html | 11 +++--- .../guides/reputation-integration/index.html | 11 +++--- zh/build-for-karma/index.html | 13 ++++--- zh/build-for-karma/what-to-build/index.html | 13 ++++--- .../why-status-network/index.html | 13 ++++--- zh/index.html | 6 +-- zh/opensearch.xml | 4 +- .../add-status-network/index.html | 12 +++--- .../bridge/bridging-testnet/index.html | 10 ++--- .../contract-addresses/pre-deposit/index.html | 12 +++--- .../testnet-contracts/index.html | 34 ++++++++--------- .../contract-addresses/tokens/index.html | 12 +++--- .../gasless-transactions/index.html | 16 ++++---- .../general-info/network-details/index.html | 10 ++--- zh/overview/general-info/privacy/index.html | 6 +-- zh/overview/index.html | 12 +++--- .../introduction/quick-start/index.html | 16 ++++---- zh/overview/other/official-links/index.html | 10 ++--- .../tokenomics/economic-model/index.html | 12 +++--- .../tokenomics/karmic-tokenomics/index.html | 21 ++++++---- .../tokenomics/pre-deposits/index.html | 13 ++++--- .../tokenomics/public-funding/index.html | 12 +++--- zh/overview/tokenomics/snt-staking/index.html | 12 +++--- zh/search/index.html | 6 +-- .../block-explorers/index.html | 8 ++-- .../core-infrastructure/bridge/index.html | 8 ++-- .../rpc-endpoints/index.html | 8 ++-- .../testnet-faucets/index.html | 8 ++-- .../ethereum-differences/index.html | 13 ++++--- zh/tools/index.html | 18 ++++++--- zh/tools/infrastructure/index.html | 8 ++-- zh/tools/rpc/json-rpc/index.html | 13 ++++--- zh/tools/rpc/running-an-rpc/index.html | 13 ++++--- 457 files changed, 854 insertions(+), 784 deletions(-) delete mode 100644 assets/js/0e80fcdd.3510cd76.js create mode 100644 assets/js/0e80fcdd.61da2355.js delete mode 100644 assets/js/10d61b1b.6a0ae099.js create mode 100644 assets/js/10d61b1b.9f9541b1.js rename zh/assets/js/1df93b7f.e386b54f.js => assets/js/1df93b7f.645b59f7.js (70%) create mode 100644 assets/js/22dd74f7.cafa2b28.js delete mode 100644 assets/js/22dd74f7.ef58de76.js create mode 100644 assets/js/2d4f555c.1f03edd3.js delete mode 100644 assets/js/2d4f555c.d4b6f9c2.js delete mode 100644 assets/js/2dfac737.bac68338.js create mode 100644 assets/js/2dfac737.e5eda046.js create mode 100644 assets/js/4b7a78ae.63e12605.js delete mode 100644 assets/js/4b7a78ae.e799e0ed.js delete mode 100644 assets/js/4e16d657.31613c06.js create mode 100644 assets/js/4e16d657.54bf4732.js delete mode 100644 assets/js/5057d25c.32fa27f1.js create mode 100644 assets/js/5057d25c.7b6f3e94.js delete mode 100644 assets/js/5d0af9ca.2c5e617b.js create mode 100644 assets/js/5d0af9ca.6e487d27.js create mode 100644 assets/js/66fb3cbd.2c7dc00c.js delete mode 100644 assets/js/66fb3cbd.3713a5eb.js create mode 100644 assets/js/70943038.33698f5f.js delete mode 100644 assets/js/70943038.e1f5a54c.js delete mode 100644 assets/js/7bd8b57f.5a42dcb1.js create mode 100644 assets/js/7bd8b57f.e77aad80.js create mode 100644 assets/js/83ea961b.7c93a6a6.js delete mode 100644 assets/js/83ea961b.e4e25a5e.js delete mode 100644 assets/js/96525a68.21dbe761.js create mode 100644 assets/js/96525a68.938f8969.js delete mode 100644 assets/js/96f8b763.05af21f1.js create mode 100644 assets/js/96f8b763.b44a428b.js delete mode 100644 assets/js/99b526a0.17180bc7.js create mode 100644 assets/js/99b526a0.5e7b5aed.js create mode 100644 assets/js/9b59a278.4021e773.js delete mode 100644 assets/js/9b59a278.9c7474e6.js delete mode 100644 assets/js/a0677901.51ea76d0.js create mode 100644 assets/js/a0677901.f133d08b.js create mode 100644 assets/js/a9f02243.37597082.js delete mode 100644 assets/js/a9f02243.ffcc1fad.js create mode 100644 assets/js/bdb9291e.104e77fa.js delete mode 100644 assets/js/bdb9291e.6c8e8bd5.js delete mode 100644 assets/js/c50f765a.6af898bd.js create mode 100644 assets/js/c50f765a.b10cbbdc.js create mode 100644 assets/js/c5b3c385.392d993e.js delete mode 100644 assets/js/c5b3c385.41927bed.js delete mode 100644 assets/js/c7266e89.132b1209.js create mode 100644 assets/js/c7266e89.48c52ea8.js delete mode 100644 assets/js/caaf0796.473ff595.js create mode 100644 assets/js/caaf0796.d1078135.js create mode 100644 assets/js/cab48688.164d373d.js delete mode 100644 assets/js/cab48688.d1e8cc91.js delete mode 100644 assets/js/cef817d0.1245741a.js create mode 100644 assets/js/cef817d0.584455c2.js create mode 100644 assets/js/d11b878a.b99cdc84.js delete mode 100644 assets/js/d11b878a.e36dfc45.js rename assets/js/{d725728a.625ee315.js => d725728a.6c16beba.js} (53%) delete mode 100644 assets/js/dad64608.5a5c53cd.js create mode 100644 assets/js/dad64608.f2f57683.js create mode 100644 assets/js/ddc55e77.12c8b312.js delete mode 100644 assets/js/ddc55e77.5b7401ed.js create mode 100644 assets/js/eeddb806.30704646.js delete mode 100644 assets/js/eeddb806.9d348bbd.js create mode 100644 assets/js/f03d57b7.3593b81d.js delete mode 100644 assets/js/f03d57b7.e8da4599.js delete mode 100644 assets/js/f6df0d46.2d4618e9.js create mode 100644 assets/js/f6df0d46.d67d8510.js create mode 100644 assets/js/f6ed3658.2288a6d9.js delete mode 100644 assets/js/f6ed3658.ab8fa171.js create mode 100644 assets/js/fb87d503.04e248af.js delete mode 100644 assets/js/fb87d503.28e1ae12.js create mode 100644 assets/js/fbc58520.1e047f70.js delete mode 100644 assets/js/fbc58520.29f6ec6e.js delete mode 100644 assets/js/main.7c66aeee.js create mode 100644 assets/js/main.d8e73f6c.js rename assets/js/{main.7c66aeee.js.LICENSE.txt => main.d8e73f6c.js.LICENSE.txt} (100%) delete mode 100644 assets/js/runtime~main.8e894a7a.js create mode 100644 assets/js/runtime~main.f8edcfec.js delete mode 100644 ja/assets/js/0872a126.be79a805.js create mode 100644 ja/assets/js/0872a126.fbeadac0.js delete mode 100644 ja/assets/js/17c546f4.af91b680.js create mode 100644 ja/assets/js/17c546f4.daba41f0.js delete mode 100644 ja/assets/js/1dd87f8a.42f9304c.js create mode 100644 ja/assets/js/1dd87f8a.dec18aad.js rename ja/assets/js/{1df93b7f.e386b54f.js => 1df93b7f.645b59f7.js} (70%) delete mode 100644 ja/assets/js/1fac8d72.00114655.js create mode 100644 ja/assets/js/1fac8d72.acf29e72.js create mode 100644 ja/assets/js/2d38b4ea.3b8a4887.js delete mode 100644 ja/assets/js/2d38b4ea.acb3b80d.js rename ja/assets/js/{380c02c0.ab57f3a2.js => 380c02c0.6724fbdb.js} (92%) delete mode 100644 ja/assets/js/38293535.70c5a794.js create mode 100644 ja/assets/js/38293535.e1adf479.js create mode 100644 ja/assets/js/39101fad.5c8df1aa.js delete mode 100644 ja/assets/js/39101fad.d586a433.js delete mode 100644 ja/assets/js/3a2a2ca6.4769eb45.js create mode 100644 ja/assets/js/3a2a2ca6.d6b0a4ef.js create mode 100644 ja/assets/js/3a48dd49.0df1a545.js delete mode 100644 ja/assets/js/3a48dd49.ffb5f527.js rename ja/assets/js/{3eef3a1b.ebd894fb.js => 3eef3a1b.fd98732b.js} (99%) delete mode 100644 ja/assets/js/4004d3db.55046119.js create mode 100644 ja/assets/js/4004d3db.8413ce5d.js delete mode 100644 ja/assets/js/58737118.6700398c.js create mode 100644 ja/assets/js/58737118.905c86d2.js delete mode 100644 ja/assets/js/58b02c82.8c0025fd.js create mode 100644 ja/assets/js/58b02c82.b7473595.js create mode 100644 ja/assets/js/58cbe906.06cc324b.js delete mode 100644 ja/assets/js/58cbe906.a4bf4cf9.js create mode 100644 ja/assets/js/5a9169ca.71e11d37.js delete mode 100644 ja/assets/js/5a9169ca.c8bbda2e.js delete mode 100644 ja/assets/js/5b6871f6.1074aae9.js create mode 100644 ja/assets/js/5b6871f6.385a899e.js delete mode 100644 ja/assets/js/6964614d.39bdef89.js create mode 100644 ja/assets/js/6964614d.d93ec7a3.js create mode 100644 ja/assets/js/76f7914b.23edfaa4.js delete mode 100644 ja/assets/js/76f7914b.fdbde935.js delete mode 100644 ja/assets/js/7952fbb2.0649a20a.js create mode 100644 ja/assets/js/7952fbb2.4dbdd784.js create mode 100644 ja/assets/js/7ca3dfe1.1466feb5.js delete mode 100644 ja/assets/js/7ca3dfe1.53a97838.js delete mode 100644 ja/assets/js/7e5b8e76.6a4ec746.js create mode 100644 ja/assets/js/7e5b8e76.b04c70a5.js create mode 100644 ja/assets/js/8165f2f3.badfa68e.js delete mode 100644 ja/assets/js/8165f2f3.d4b28243.js create mode 100644 ja/assets/js/91f0146a.80afe185.js delete mode 100644 ja/assets/js/91f0146a.917dfb98.js create mode 100644 ja/assets/js/a3475721.44d09077.js delete mode 100644 ja/assets/js/a3475721.9300f58b.js delete mode 100644 ja/assets/js/abd89008.140ff703.js create mode 100644 ja/assets/js/abd89008.24471dd8.js rename ja/assets/js/{b02de2f0.1e2052c3.js => b02de2f0.e1c41ac4.js} (98%) create mode 100644 ja/assets/js/be246233.4012e3d8.js delete mode 100644 ja/assets/js/be246233.a7094783.js rename ja/assets/js/{c2c864ab.a5f5400a.js => c2c864ab.a0bdd913.js} (99%) create mode 100644 ja/assets/js/ca3975d0.075da835.js delete mode 100644 ja/assets/js/ca3975d0.aae76647.js create mode 100644 ja/assets/js/cf6af3d6.e3e08a0d.js delete mode 100644 ja/assets/js/cf6af3d6.f570e19c.js rename ja/assets/js/{d59000f0.5c86f339.js => d59000f0.3a456ffe.js} (99%) delete mode 100644 ja/assets/js/dd5b2b0c.606e27cd.js create mode 100644 ja/assets/js/dd5b2b0c.60b4ea75.js delete mode 100644 ja/assets/js/e61373bb.090a18f8.js create mode 100644 ja/assets/js/e61373bb.44808b05.js delete mode 100644 ja/assets/js/fc1a2222.27e642a0.js create mode 100644 ja/assets/js/fc1a2222.f0041317.js rename ja/assets/js/{fd9048e7.ec85fc39.js => fd9048e7.ef6c4539.js} (84%) delete mode 100644 ja/assets/js/main.13414ec2.js create mode 100644 ja/assets/js/main.f0fd9375.js rename ja/assets/js/{main.13414ec2.js.LICENSE.txt => main.f0fd9375.js.LICENSE.txt} (100%) delete mode 100644 ja/assets/js/runtime~main.313d6c0f.js create mode 100644 ja/assets/js/runtime~main.d85844cd.js create mode 100644 ko/assets/js/04de74e0.39e08306.js delete mode 100644 ko/assets/js/04de74e0.d8f15c4c.js delete mode 100644 ko/assets/js/0faaaa09.ace05956.js create mode 100644 ko/assets/js/0faaaa09.baf3954e.js rename ko/assets/js/{18d4d613.b0b479d6.js => 18d4d613.71946c70.js} (99%) rename assets/js/1df93b7f.e386b54f.js => ko/assets/js/1df93b7f.645b59f7.js (70%) rename ko/assets/js/{29ba3fc5.6a9b5c6a.js => 29ba3fc5.7f4438a3.js} (99%) delete mode 100644 ko/assets/js/2df726ed.37f0bf2d.js create mode 100644 ko/assets/js/2df726ed.40033e58.js delete mode 100644 ko/assets/js/2f507f1a.5b81d9e9.js create mode 100644 ko/assets/js/2f507f1a.7bf9107d.js delete mode 100644 ko/assets/js/3575842c.776e3ba1.js create mode 100644 ko/assets/js/3575842c.ef66a689.js create mode 100644 ko/assets/js/3ab5ca91.0139db95.js delete mode 100644 ko/assets/js/3ab5ca91.bffc5ada.js delete mode 100644 ko/assets/js/4a7b1d31.2da228bb.js create mode 100644 ko/assets/js/4a7b1d31.c25e2ca6.js create mode 100644 ko/assets/js/5029d62a.81b2d540.js delete mode 100644 ko/assets/js/5029d62a.cb215504.js delete mode 100644 ko/assets/js/528bdaa1.0ff37514.js create mode 100644 ko/assets/js/528bdaa1.2a02d722.js create mode 100644 ko/assets/js/5a7d3f58.654018e5.js delete mode 100644 ko/assets/js/5a7d3f58.6b7eac54.js delete mode 100644 ko/assets/js/5ec14bd2.55062a92.js create mode 100644 ko/assets/js/5ec14bd2.aa24b6af.js delete mode 100644 ko/assets/js/6cda35cb.32617514.js create mode 100644 ko/assets/js/6cda35cb.745e8670.js create mode 100644 ko/assets/js/70481726.ac76a117.js delete mode 100644 ko/assets/js/70481726.e56633b7.js create mode 100644 ko/assets/js/7af1a67d.5a20c98f.js delete mode 100644 ko/assets/js/7af1a67d.e47aa532.js delete mode 100644 ko/assets/js/7f554d3a.29e1c33a.js create mode 100644 ko/assets/js/7f554d3a.78761edc.js create mode 100644 ko/assets/js/84833cb8.43cb3eb5.js delete mode 100644 ko/assets/js/84833cb8.adfbadd9.js create mode 100644 ko/assets/js/8a4e1544.ae386b41.js delete mode 100644 ko/assets/js/8a4e1544.b3d2d35f.js delete mode 100644 ko/assets/js/8cad4b45.27fd14d8.js create mode 100644 ko/assets/js/8cad4b45.6a2ed238.js create mode 100644 ko/assets/js/8ebc3d09.1688360c.js delete mode 100644 ko/assets/js/8ebc3d09.c0dc0164.js delete mode 100644 ko/assets/js/9c22cc29.26d4ccb7.js create mode 100644 ko/assets/js/9c22cc29.c69b2de3.js create mode 100644 ko/assets/js/a65d1ba2.8f92d022.js delete mode 100644 ko/assets/js/a65d1ba2.e913dd82.js create mode 100644 ko/assets/js/ae692ba6.89aa6702.js delete mode 100644 ko/assets/js/ae692ba6.935634e6.js rename ko/assets/js/{afa4c641.bd6674f7.js => afa4c641.0176def1.js} (91%) create mode 100644 ko/assets/js/b1a05683.4b271c09.js delete mode 100644 ko/assets/js/b1a05683.fd2a090d.js create mode 100644 ko/assets/js/b5d96a5d.0db6b078.js delete mode 100644 ko/assets/js/b5d96a5d.22712b51.js delete mode 100644 ko/assets/js/b63a2bbb.4c1864b5.js create mode 100644 ko/assets/js/b63a2bbb.9e38c307.js delete mode 100644 ko/assets/js/ccebf5a8.4f7edddf.js create mode 100644 ko/assets/js/ccebf5a8.f25aaea6.js create mode 100644 ko/assets/js/ce755ae8.36a45fb4.js delete mode 100644 ko/assets/js/ce755ae8.69065478.js create mode 100644 ko/assets/js/d186b8b7.6a8b82ed.js delete mode 100644 ko/assets/js/d186b8b7.91c5baec.js delete mode 100644 ko/assets/js/d32f428a.477cca8b.js create mode 100644 ko/assets/js/d32f428a.5dfede5c.js delete mode 100644 ko/assets/js/dcaccab5.4ce110d6.js create mode 100644 ko/assets/js/dcaccab5.f0eb99d9.js delete mode 100644 ko/assets/js/ee51504e.29f4e331.js create mode 100644 ko/assets/js/ee51504e.8009cced.js create mode 100644 ko/assets/js/f7b379ae.0fe12166.js delete mode 100644 ko/assets/js/f7b379ae.9dbdff08.js create mode 100644 ko/assets/js/fbef5dbf.0369bd07.js delete mode 100644 ko/assets/js/fbef5dbf.e93b7f1c.js delete mode 100644 ko/assets/js/main.91ac9c64.js create mode 100644 ko/assets/js/main.9eecc853.js rename ko/assets/js/{main.91ac9c64.js.LICENSE.txt => main.9eecc853.js.LICENSE.txt} (100%) delete mode 100644 ko/assets/js/runtime~main.09cc7287.js create mode 100644 ko/assets/js/runtime~main.afcd8af0.js delete mode 100644 zh/assets/js/0172eeaa.413078ab.js create mode 100644 zh/assets/js/0172eeaa.ed5b60c0.js create mode 100644 zh/assets/js/038e2c56.9943e82d.js delete mode 100644 zh/assets/js/038e2c56.ea720ab5.js delete mode 100644 zh/assets/js/101339e2.46c4b9ad.js create mode 100644 zh/assets/js/101339e2.abba5819.js create mode 100644 zh/assets/js/129d4249.12616148.js delete mode 100644 zh/assets/js/129d4249.bed16908.js delete mode 100644 zh/assets/js/1ab2411e.49244b83.js create mode 100644 zh/assets/js/1ab2411e.a95e3e62.js rename ko/assets/js/1df93b7f.e386b54f.js => zh/assets/js/1df93b7f.645b59f7.js (70%) create mode 100644 zh/assets/js/1fd47fce.45ea0611.js delete mode 100644 zh/assets/js/1fd47fce.679c730b.js create mode 100644 zh/assets/js/2f4528f3.531cef45.js delete mode 100644 zh/assets/js/2f4528f3.ca440a15.js create mode 100644 zh/assets/js/3043a7db.4799d06e.js delete mode 100644 zh/assets/js/3043a7db.b68c8b43.js create mode 100644 zh/assets/js/3ab3463f.60508bff.js delete mode 100644 zh/assets/js/3ab3463f.6da7f64e.js delete mode 100644 zh/assets/js/41187fc8.4e3ee12f.js create mode 100644 zh/assets/js/41187fc8.e36a311b.js create mode 100644 zh/assets/js/42073c06.e52d0f19.js delete mode 100644 zh/assets/js/42073c06.f05d27ea.js create mode 100644 zh/assets/js/4435df21.3ad4d80f.js delete mode 100644 zh/assets/js/4435df21.4161121d.js rename zh/assets/js/{683aacd6.4d226883.js => 683aacd6.82b43e06.js} (98%) delete mode 100644 zh/assets/js/75122f20.7a46304d.js create mode 100644 zh/assets/js/75122f20.9764744f.js create mode 100644 zh/assets/js/77b8a1df.62e9427c.js delete mode 100644 zh/assets/js/77b8a1df.ffefaf2a.js rename zh/assets/js/{89fe6b78.5abe8e41.js => 89fe6b78.f6cce05e.js} (99%) create mode 100644 zh/assets/js/8e97385a.072d585d.js delete mode 100644 zh/assets/js/8e97385a.9c59a01a.js create mode 100644 zh/assets/js/9444fb78.2e1926bb.js delete mode 100644 zh/assets/js/9444fb78.91f3cf5c.js create mode 100644 zh/assets/js/97e6a127.9646f5ed.js delete mode 100644 zh/assets/js/97e6a127.bacf7619.js delete mode 100644 zh/assets/js/9bcf9f79.294d5d20.js create mode 100644 zh/assets/js/9bcf9f79.9bfd1934.js delete mode 100644 zh/assets/js/a0abc158.3bdf28d4.js create mode 100644 zh/assets/js/a0abc158.ae17e6df.js create mode 100644 zh/assets/js/a406f782.079c1057.js delete mode 100644 zh/assets/js/a406f782.483588eb.js rename zh/assets/js/{a6ad7a7e.dc0fa139.js => a6ad7a7e.1410bcb9.js} (98%) delete mode 100644 zh/assets/js/a82944ca.4a8e3e4f.js create mode 100644 zh/assets/js/a82944ca.4e9a602a.js delete mode 100644 zh/assets/js/b393c6a9.2af6d1e6.js create mode 100644 zh/assets/js/b393c6a9.af2149fd.js rename zh/assets/js/{b3a90344.7a050658.js => b3a90344.8447e347.js} (99%) create mode 100644 zh/assets/js/b72e7071.19b2b1ff.js delete mode 100644 zh/assets/js/b72e7071.704aa7b6.js create mode 100644 zh/assets/js/baf9c028.a44b1655.js delete mode 100644 zh/assets/js/baf9c028.cfc17c9f.js delete mode 100644 zh/assets/js/c28c6f9d.42ff3f7f.js create mode 100644 zh/assets/js/c28c6f9d.892e265d.js create mode 100644 zh/assets/js/d017210d.b8bcdae0.js delete mode 100644 zh/assets/js/d017210d.eaecb2f7.js delete mode 100644 zh/assets/js/daeb30e0.83dbbcfd.js create mode 100644 zh/assets/js/daeb30e0.fbf2fad4.js delete mode 100644 zh/assets/js/db158d87.6b3cf7b3.js create mode 100644 zh/assets/js/db158d87.bbe990d3.js delete mode 100644 zh/assets/js/de1ec0c1.70872403.js create mode 100644 zh/assets/js/de1ec0c1.84017400.js delete mode 100644 zh/assets/js/e35f8838.0632ea7a.js create mode 100644 zh/assets/js/e35f8838.4e6828bf.js create mode 100644 zh/assets/js/f545f562.3524e4b4.js delete mode 100644 zh/assets/js/f545f562.f871c588.js rename zh/assets/js/{fe2d7bf2.66dda914.js => fe2d7bf2.e7e4d08d.js} (91%) delete mode 100644 zh/assets/js/main.4e6d4a63.js create mode 100644 zh/assets/js/main.8c1af504.js rename zh/assets/js/{main.4e6d4a63.js.LICENSE.txt => main.8c1af504.js.LICENSE.txt} (100%) rename zh/assets/js/{runtime~main.2f6c6264.js => runtime~main.8818401f.js} (80%) diff --git a/404.html b/404.html index 6857f45..947ab4a 100644 --- a/404.html +++ b/404.html @@ -3,10 +3,10 @@ -Status Network Documentation +Status Network Docs - - + + diff --git a/assets/js/0e80fcdd.3510cd76.js b/assets/js/0e80fcdd.3510cd76.js deleted file mode 100644 index 87d4d86..0000000 --- a/assets/js/0e80fcdd.3510cd76.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5419],{1502:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"overview/tokenomics/karmic-tokenomics","title":"Karmic Tokenomics","description":"Explore Status Network\'s Karma system, a non-transferable governance token that rewards network participation and determines influence over funding decisions, incentives, and network parameters.","source":"@site/docs/overview/tokenomics/karmic-tokenomics.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/karmic-tokenomics","permalink":"/overview/tokenomics/karmic-tokenomics","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/karmic-tokenomics.md","tags":[],"version":"current","lastUpdatedAt":1772141546000,"frontMatter":{"title":"Karmic Tokenomics","description":"Explore Status Network\'s Karma system, a non-transferable governance token that rewards network participation and determines influence over funding decisions, incentives, and network parameters.","keywords":["Karma token","Karmic tokenomics","Status Network governance","non-transferable token","governance power","staking rewards","contribution rewards"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udcb0 Public Funding","permalink":"/overview/tokenomics/public-funding"},"next":{"title":"\ud83d\udc8e SNT Staking","permalink":"/overview/tokenomics/snt-staking"}}');var i=t(4848),s=t(8453);const a={title:"Karmic Tokenomics",description:"Explore Status Network's Karma system, a non-transferable governance token that rewards network participation and determines influence over funding decisions, incentives, and network parameters.",keywords:["Karma token","Karmic tokenomics","Status Network governance","non-transferable token","governance power","staking rewards","contribution rewards"]},o=void 0,d={},l=[{value:"Karma Tiers",id:"karma-tiers",level:2},{value:"Current Tier Model (Testnet)",id:"current-tier-model-testnet",level:3},{value:"How Karma is Earned",id:"how-karma-is-earned",level:2},{value:"Utility of Karma",id:"utility-of-karma",level:2},{value:"Flywheel Effect",id:"flywheel-effect",level:2}];function c(e){const n={admonition:"admonition",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"In some Eastern traditions, Karma represents the principle that one's past actions shape their future state. Similarly, on Status Network, every positive action and contribution accumulates Karma, granting greater influence over the network's funding and incentives. Karma ($KARMA) is a non-transferable governance token that rewards staking, bridging, providing liquidity, and building. The more a user or an app contributes to the L2 in liquidity or activity, the more voting power they earn over funding allocations, liquidity incentives, and network roadmap and parameters."}),"\n",(0,i.jsx)(n.h2,{id:"karma-tiers",children:"Karma Tiers"}),"\n",(0,i.jsx)(n.p,{children:"Karma tiers determine the gasless transaction quota for each address. Higher tiers get more free transactions per epoch."}),"\n",(0,i.jsx)(n.h3,{id:"current-tier-model-testnet",children:"Current Tier Model (Testnet)"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Tier"}),(0,i.jsx)(n.th,{children:"Daily Quota"}),(0,i.jsx)(n.th,{children:"Equivalent Rate"}),(0,i.jsx)(n.th,{children:"Karma Range"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Entry"}),(0,i.jsx)(n.td,{children:"1 tx/day"}),(0,i.jsx)(n.td,{children:"1 tx every 24 hours"}),(0,i.jsx)(n.td,{children:"1-2"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Newbie"}),(0,i.jsx)(n.td,{children:"5 tx/day"}),(0,i.jsx)(n.td,{children:"1 tx every ~5 hours"}),(0,i.jsx)(n.td,{children:"2-49"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Basic"}),(0,i.jsx)(n.td,{children:"15 tx/day"}),(0,i.jsx)(n.td,{children:"1 tx every 90 minutes"}),(0,i.jsx)(n.td,{children:"50-499"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Active"}),(0,i.jsx)(n.td,{children:"96 tx/day"}),(0,i.jsx)(n.td,{children:"1 tx every 15 minutes"}),(0,i.jsx)(n.td,{children:"500-4999"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Regular"}),(0,i.jsx)(n.td,{children:"480 tx/day"}),(0,i.jsx)(n.td,{children:"1 tx every 3 minutes"}),(0,i.jsx)(n.td,{children:"5000-19999"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Power User"}),(0,i.jsx)(n.td,{children:"960 tx/day"}),(0,i.jsx)(n.td,{children:"1 tx every 90 seconds"}),(0,i.jsx)(n.td,{children:"20000-99999"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Pro User"}),(0,i.jsx)(n.td,{children:"10080 tx/day"}),(0,i.jsx)(n.td,{children:"1 tx every 9 seconds"}),(0,i.jsx)(n.td,{children:"100000-499999"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"High-Throughput"}),(0,i.jsx)(n.td,{children:"108000 tx/day"}),(0,i.jsx)(n.td,{children:"1 TPS"}),(0,i.jsx)(n.td,{children:"500000-4999999"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"S-Tier"}),(0,i.jsx)(n.td,{children:"240000 tx/day"}),(0,i.jsx)(n.td,{children:"5 TPS"}),(0,i.jsx)(n.td,{children:"5000000-9999999"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Legendary"}),(0,i.jsx)(n.td,{children:"480000 tx/day"}),(0,i.jsx)(n.td,{children:"10 TPS"}),(0,i.jsx)(n.td,{children:"10000000 and more"})]})]})]}),"\n",(0,i.jsx)(n.admonition,{title:"Testnet-only model",type:"info",children:(0,i.jsx)(n.p,{children:"This tier model is currently used for testnet alignment. The exact quota numbers per tier will be governed by Karma holders in the future and may change."})}),"\n",(0,i.jsx)(n.h2,{id:"how-karma-is-earned",children:"How Karma is Earned"}),"\n",(0,i.jsx)(n.p,{children:"Karma is minted through six primary mechanisms and cannot be acquired, ensuring that no entity\u2014including the Status team\u2014has any advantage in getting access to it. Everyone earns Karma under the same rules, based solely on their contributions to the network, ensuring it remains a pure representation of meaningful engagement within the network:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Staking SNT"})," \u2013 Anyone staking SNT receives Karma rewards proportionally. The longer one stakes or locks their SNT, the higher the Karma earning rate."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Bridging Yield-Bearing Assets"})," \u2013 Bridging ETH and DAI (initially, with more assets to be added later) to Status Network earns Karma."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Providing Liquidity"})," \u2013 On the native DEX, anyone can provide liquidity to curated pools to earn fees, native yield rewards, and Karma"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Building and Using Applications"})," \u2013 Users and developers earn Karma through transaction volume and app traction. The more successful an app is, the higher Karma is allocated to its developers and users."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Paying Premium Gas Fees"})," \u2013 Users and apps exceeding their gasless throughput limit pay a premium gas fee that serves as a penalty but also earns them some Karma in return. Increasing their Karma might actually allow them to unlock higher gas-free transaction limits."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Direct Donations"})," \u2013 Anyone contributing directly to the public funding pool receives Karma."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The initialization parameters of Karma minting allocations will be announced soon. In the future, Karma holders will be able to modify those parameters through a vote if needed. The ultimate objective is to maximize alignment among stakeholders for a more sustainable growth of the network."}),"\n",(0,i.jsx)(n.h2,{id:"utility-of-karma",children:"Utility of Karma"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Gasless Transactions"}),": As soon as an account has a positive Karma balance, it gains access to a certain throughput of free transactions. A tiered system allows users and apps with higher Karma to enjoy more free transactions per day. A dynamic rate-limiting mechanism prevents spam and ensures fair usage of the network."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Governance Token"}),": Karma holders vote on the allocation of the apps funding pool. Higher Karma scores have more weight in funding distribution - they can decide to prioritize their favourite applications or protocols."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Native DEX Liquidity Incentives"}),": Karma holders vote on the incentive gauges for all curated liquidity pools on the native DEX."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Network Policy Decisions"}),": Karma holders vote on the L2 economic and operational parameters, including native yield and fees distribution, Karma minting rate and allocation, etc."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Loyalty and Reputation System"}),": Since Karma is soulbound, high Karma scores signal power users and key contributors within the ecosystem. The users progressively accumulate influence and may gain access to extra incentives and perks (e.g. rewards from apps building on the network and seeking to attract high-quality users)."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Liquid Grants for Votes"}),": In the future, apps, protocols, and liquidity providers will be able to offer liquid grants to Karma holders as voting incentives."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"flywheel-effect",children:"Flywheel Effect"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Users bridge yield-bearing assets, earning Karma and increasing funding for apps and liquidity providers."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Higher app funding attracts new apps to deploy on the network."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Funded apps onboard more users, increasing transaction volume on the native DEX."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Higher native yield and fees attract more TVL as users bridge additional yield-bearing assets."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"As TVL and adoption grow, so do funding opportunities, reinforcing network sustainability."})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const i={},s=r.createContext(i);function a(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0e80fcdd.61da2355.js b/assets/js/0e80fcdd.61da2355.js new file mode 100644 index 0000000..0ae68bf --- /dev/null +++ b/assets/js/0e80fcdd.61da2355.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5419],{1502:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"overview/tokenomics/karmic-tokenomics","title":"Karmic Tokenomics: Earn Reputation & Governance Power","description":"Detailed guide to Karmic Tokenomics. Learn how soulbound Karma governs transaction throughput, native yield distribution, and network-level spam slashing.","source":"@site/docs/overview/tokenomics/karmic-tokenomics.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/karmic-tokenomics","permalink":"/overview/tokenomics/karmic-tokenomics","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/karmic-tokenomics.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Karmic Tokenomics: Earn Reputation & Governance Power","description":"Detailed guide to Karmic Tokenomics. Learn how soulbound Karma governs transaction throughput, native yield distribution, and network-level spam slashing.","keywords":["Karma token","Karmic tokenomics","Status Network governance","non-transferable token","governance power","staking rewards","contribution rewards"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udcb0 Public Funding","permalink":"/overview/tokenomics/public-funding"},"next":{"title":"\ud83d\udc8e SNT Staking","permalink":"/overview/tokenomics/snt-staking"}}');var r=t(4848),s=t(8453);const a={title:"Karmic Tokenomics: Earn Reputation & Governance Power",description:"Detailed guide to Karmic Tokenomics. Learn how soulbound Karma governs transaction throughput, native yield distribution, and network-level spam slashing.",keywords:["Karma token","Karmic tokenomics","Status Network governance","non-transferable token","governance power","staking rewards","contribution rewards"]},o="Karmic Tokenomics",d={},l=[{value:"Karma Tiers",id:"karma-tiers",level:2},{value:"Current Tier Model (Testnet)",id:"current-tier-model-testnet",level:3},{value:"How Karma is Earned",id:"how-karma-is-earned",level:2},{value:"Utility of Karma",id:"utility-of-karma",level:2},{value:"Flywheel Effect",id:"flywheel-effect",level:2}];function c(e){const n={admonition:"admonition",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"karmic-tokenomics",children:"Karmic Tokenomics"})}),"\n",(0,r.jsx)(n.p,{children:"In some Eastern traditions, Karma represents the principle that one's past actions shape their future state. Similarly, on Status Network, every positive action and contribution accumulates Karma, granting greater influence over the network's funding and incentives. Karma ($KARMA) is a non-transferable governance token that rewards staking, bridging, providing liquidity, and building. The more a user or an app contributes to the L2 in liquidity or activity, the more voting power they earn over funding allocations, liquidity incentives, and network roadmap and parameters."}),"\n",(0,r.jsx)(n.h2,{id:"karma-tiers",children:"Karma Tiers"}),"\n",(0,r.jsx)(n.p,{children:"Karma tiers determine the gasless transaction quota for each address. Higher tiers get more free transactions per epoch."}),"\n",(0,r.jsx)(n.h3,{id:"current-tier-model-testnet",children:"Current Tier Model (Testnet)"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Tier"}),(0,r.jsx)(n.th,{children:"Daily Quota"}),(0,r.jsx)(n.th,{children:"Equivalent Rate"}),(0,r.jsx)(n.th,{children:"Karma Range"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Entry"}),(0,r.jsx)(n.td,{children:"1 tx/day"}),(0,r.jsx)(n.td,{children:"1 tx every 24 hours"}),(0,r.jsx)(n.td,{children:"1-2"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Newbie"}),(0,r.jsx)(n.td,{children:"5 tx/day"}),(0,r.jsx)(n.td,{children:"1 tx every ~5 hours"}),(0,r.jsx)(n.td,{children:"2-49"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Basic"}),(0,r.jsx)(n.td,{children:"15 tx/day"}),(0,r.jsx)(n.td,{children:"1 tx every 90 minutes"}),(0,r.jsx)(n.td,{children:"50-499"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Active"}),(0,r.jsx)(n.td,{children:"96 tx/day"}),(0,r.jsx)(n.td,{children:"1 tx every 15 minutes"}),(0,r.jsx)(n.td,{children:"500-4999"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Regular"}),(0,r.jsx)(n.td,{children:"480 tx/day"}),(0,r.jsx)(n.td,{children:"1 tx every 3 minutes"}),(0,r.jsx)(n.td,{children:"5000-19999"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Power User"}),(0,r.jsx)(n.td,{children:"960 tx/day"}),(0,r.jsx)(n.td,{children:"1 tx every 90 seconds"}),(0,r.jsx)(n.td,{children:"20000-99999"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Pro User"}),(0,r.jsx)(n.td,{children:"10080 tx/day"}),(0,r.jsx)(n.td,{children:"1 tx every 9 seconds"}),(0,r.jsx)(n.td,{children:"100000-499999"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"High-Throughput"}),(0,r.jsx)(n.td,{children:"108000 tx/day"}),(0,r.jsx)(n.td,{children:"1 TPS"}),(0,r.jsx)(n.td,{children:"500000-4999999"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"S-Tier"}),(0,r.jsx)(n.td,{children:"240000 tx/day"}),(0,r.jsx)(n.td,{children:"5 TPS"}),(0,r.jsx)(n.td,{children:"5000000-9999999"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Legendary"}),(0,r.jsx)(n.td,{children:"480000 tx/day"}),(0,r.jsx)(n.td,{children:"10 TPS"}),(0,r.jsx)(n.td,{children:"10000000 and more"})]})]})]}),"\n",(0,r.jsx)(n.admonition,{title:"Testnet-only model",type:"info",children:(0,r.jsx)(n.p,{children:"This tier model is currently used for testnet alignment. The exact quota numbers per tier will be governed by Karma holders in the future and may change."})}),"\n",(0,r.jsx)(n.h2,{id:"how-karma-is-earned",children:"How Karma is Earned"}),"\n",(0,r.jsx)(n.p,{children:"Karma is minted through six primary mechanisms and cannot be acquired, ensuring that no entity\u2014including the Status team\u2014has any advantage in getting access to it. Everyone earns Karma under the same rules, based solely on their contributions to the network, ensuring it remains a pure representation of meaningful engagement within the network:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Staking SNT"})," \u2013 Anyone staking SNT receives Karma rewards proportionally. The longer one stakes or locks their SNT, the higher the Karma earning rate."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Bridging Yield-Bearing Assets"})," \u2013 Bridging ETH and DAI (initially, with more assets to be added later) to Status Network earns Karma."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Providing Liquidity"})," \u2013 On the native DEX, anyone can provide liquidity to curated pools to earn fees, native yield rewards, and Karma"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Building and Using Applications"})," \u2013 Users and developers earn Karma through transaction volume and app traction. The more successful an app is, the higher Karma is allocated to its developers and users."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Paying Premium Gas Fees"})," \u2013 Users and apps exceeding their gasless throughput limit pay a premium gas fee that serves as a penalty but also earns them some Karma in return. Increasing their Karma might actually allow them to unlock higher gas-free transaction limits."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Direct Donations"})," \u2013 Anyone contributing directly to the public funding pool receives Karma."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The initialization parameters of Karma minting allocations will be announced soon. In the future, Karma holders will be able to modify those parameters through a vote if needed. The ultimate objective is to maximize alignment among stakeholders for a more sustainable growth of the network."}),"\n",(0,r.jsx)(n.h2,{id:"utility-of-karma",children:"Utility of Karma"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Gasless Transactions"}),": As soon as an account has a positive Karma balance, it gains access to a certain throughput of free transactions. A tiered system allows users and apps with higher Karma to enjoy more free transactions per day. A dynamic rate-limiting mechanism prevents spam and ensures fair usage of the network."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Governance Token"}),": Karma holders vote on the allocation of the apps funding pool. Higher Karma scores have more weight in funding distribution - they can decide to prioritize their favourite applications or protocols."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Native DEX Liquidity Incentives"}),": Karma holders vote on the incentive gauges for all curated liquidity pools on the native DEX."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Network Policy Decisions"}),": Karma holders vote on the L2 economic and operational parameters, including native yield and fees distribution, Karma minting rate and allocation, etc."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Loyalty and Reputation System"}),": Since Karma is soulbound, high Karma scores signal power users and key contributors within the ecosystem. The users progressively accumulate influence and may gain access to extra incentives and perks (e.g. rewards from apps building on the network and seeking to attract high-quality users)."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Liquid Grants for Votes"}),": In the future, apps, protocols, and liquidity providers will be able to offer liquid grants to Karma holders as voting incentives."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"flywheel-effect",children:"Flywheel Effect"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Users bridge yield-bearing assets, earning Karma and increasing funding for apps and liquidity providers."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Higher app funding attracts new apps to deploy on the network."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Funded apps onboard more users, increasing transaction volume on the native DEX."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Higher native yield and fees attract more TVL as users bridge additional yield-bearing assets."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"As TVL and adoption grow, so do funding opportunities, reinforcing network sustainability."})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(6540);const r={},s=i.createContext(r);function a(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/10d61b1b.6a0ae099.js b/assets/js/10d61b1b.6a0ae099.js deleted file mode 100644 index 73c3a89..0000000 --- a/assets/js/10d61b1b.6a0ae099.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5346],{5995:(e,t,s)=>{s.d(t,{A:()=>n});var r=s(6540),i=s(4848);function n({text:e,ariaLabel:t}){const[s,n]=(0,r.useState)(!1);return(0,i.jsx)("button",{type:"button",className:"button button--sm button--secondary","aria-label":t||`Copy ${e}`,onClick:async()=>{try{if("undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}n(!0),window.setTimeout((()=>n(!1)),1500)}catch(t){console.error("Copy failed",t)}},title:s?"Copied!":"Copy to clipboard",style:{float:"right",marginLeft:"8px"},children:(0,i.jsx)("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center"},children:s?(0,i.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,i.jsx)("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):(0,i.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,i.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2",stroke:"currentColor",strokeWidth:"2"}),(0,i.jsx)("path",{d:"M5 15H4C2.895 15 2 14.105 2 13V4C2 2.895 2.895 2 4 2H13C14.105 2 15 2.895 15 4V5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}},6493:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"overview/other/official-links","title":"Official Links","description":"Complete directory of official Status Network resources, including main website, tools, development resources, and community links.","source":"@site/docs/overview/other/official-links.md","sourceDirName":"overview/other","slug":"/overview/other/official-links","permalink":"/overview/other/official-links","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/other/official-links.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Official Links","description":"Complete directory of official Status Network resources, including main website, tools, development resources, and community links.","keywords":["Status Network links","official resources","network tools","development resources","community links","blockchain explorer","bridge","faucet"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\uddea Bridging Testnet","permalink":"/overview/general-info/bridge/bridging-testnet"}}');var i=s(4848),n=s(8453),o=s(5995);const l={title:"Official Links",description:"Complete directory of official Status Network resources, including main website, tools, development resources, and community links.",keywords:["Status Network links","official resources","network tools","development resources","community links","blockchain explorer","bridge","faucet"]},c="Official Links",d={},a=[{value:"Main Resources",id:"main-resources",level:2},{value:"Network Tools",id:"network-tools",level:2},{value:"Development Resources",id:"development-resources",level:2},{value:"Community & Support",id:"community--support",level:2}];function h(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"official-links",children:"Official Links"})}),"\n",(0,i.jsx)(t.p,{children:"This page contains all the official links for the Status Network ecosystem."}),"\n",(0,i.jsx)(t.h2,{id:"main-resources",children:"Main Resources"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Link"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Website"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://status.network",children:"status.network"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Documentation"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://docs.status.network",children:"docs.status.network"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"GitHub"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://github.com/status-im",children:"github.com/status-im"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Monorepo"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://github.com/status-im/status-network-monorepo",children:"github.com/status-im/status-network-monorepo"})})]})]})]}),"\n",(0,i.jsx)(t.h2,{id:"network-tools",children:"Network Tools"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Link"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Bridge"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.a,{href:"https://bridge.status.network",children:"bridge.status.network"})," ",(0,i.jsx)(o.A,{text:"https://bridge.status.network",ariaLabel:"Copy bridge URL"})]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Block Explorer"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"sepoliascan.status.network"})," ",(0,i.jsx)(o.A,{text:"https://sepoliascan.status.network",ariaLabel:"Copy block explorer URL"})]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"RPC Endpoint"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.a,{href:"https://public.sepolia.rpc.status.network",children:"public.sepolia.rpc.status.network"})," ",(0,i.jsx)(o.A,{text:"https://public.sepolia.rpc.status.network",ariaLabel:"Copy RPC endpoint URL"})]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"WebSocket RPC"}),(0,i.jsxs)(t.td,{children:["Get in touch with us on ",(0,i.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram"})," to get a websocket RPC"]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Faucet"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.a,{href:"https://faucet.status.network",children:"faucet.status.network"})," ",(0,i.jsx)(o.A,{text:"https://faucet.status.network",ariaLabel:"Copy faucet URL"})]})]})]})]}),"\n",(0,i.jsx)(t.h2,{id:"development-resources",children:"Development Resources"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Link"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Token List Repository"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://github.com/status-im/status-network-token-list",children:"github.com/status-im/status-network-token-list"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Contract Verification"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://sepoliascan.status.network/contract-verification",children:"sepoliascan.status.network/contract-verification"})})]})]})]}),"\n",(0,i.jsx)(t.h2,{id:"community--support",children:"Community & Support"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Link"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Telegram Community"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://t.me/statusl2",children:"t.me/statusl2"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"X/twitter"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://x.com/statusL2",children:"x.com/statusL2"})})]})]})]}),"\n",(0,i.jsxs)(t.p,{children:["For detailed information about adding the network to your wallet, see our ",(0,i.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Network guide"}),"."]})]})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>l});var r=s(6540);const i={},n=r.createContext(i);function o(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/10d61b1b.9f9541b1.js b/assets/js/10d61b1b.9f9541b1.js new file mode 100644 index 0000000..377ab51 --- /dev/null +++ b/assets/js/10d61b1b.9f9541b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5346],{5995:(t,e,s)=>{s.d(e,{A:()=>n});var r=s(6540),i=s(4848);function n({text:t,ariaLabel:e}){const[s,n]=(0,r.useState)(!1);return(0,i.jsx)("button",{type:"button",className:"button button--sm button--secondary","aria-label":e||`Copy ${t}`,onClick:async()=>{try{if("undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}n(!0),window.setTimeout((()=>n(!1)),1500)}catch(e){console.error("Copy failed",e)}},title:s?"Copied!":"Copy to clipboard",style:{float:"right",marginLeft:"8px"},children:(0,i.jsx)("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center"},children:s?(0,i.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,i.jsx)("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):(0,i.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,i.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2",stroke:"currentColor",strokeWidth:"2"}),(0,i.jsx)("path",{d:"M5 15H4C2.895 15 2 14.105 2 13V4C2 2.895 2.895 2 4 2H13C14.105 2 15 2.895 15 4V5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}},6493:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>c,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"overview/other/official-links","title":"Official Links: Status Network Resources & Communities","description":"Access the directory for Status Network: mainnet links, bridge tools, faucet access, and developer communities for our reputation-based L2 infrastructure.","source":"@site/docs/overview/other/official-links.md","sourceDirName":"overview/other","slug":"/overview/other/official-links","permalink":"/overview/other/official-links","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/other/official-links.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Official Links: Status Network Resources & Communities","description":"Access the directory for Status Network: mainnet links, bridge tools, faucet access, and developer communities for our reputation-based L2 infrastructure.","keywords":["Status Network links","official resources","network tools","development resources","community links","blockchain explorer","bridge","faucet"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\uddea Bridging Testnet","permalink":"/overview/general-info/bridge/bridging-testnet"}}');var i=s(4848),n=s(8453),o=s(5995);const c={title:"Official Links: Status Network Resources & Communities",description:"Access the directory for Status Network: mainnet links, bridge tools, faucet access, and developer communities for our reputation-based L2 infrastructure.",keywords:["Status Network links","official resources","network tools","development resources","community links","blockchain explorer","bridge","faucet"]},a="Official Links",l={},d=[{value:"Main Resources",id:"main-resources",level:2},{value:"Network Tools",id:"network-tools",level:2},{value:"Development Resources",id:"development-resources",level:2},{value:"Community & Support",id:"community--support",level:2}];function h(t){const e={a:"a",h1:"h1",h2:"h2",header:"header",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.header,{children:(0,i.jsx)(e.h1,{id:"official-links",children:"Official Links"})}),"\n",(0,i.jsx)(e.p,{children:"This page contains all the official links for the Status Network ecosystem."}),"\n",(0,i.jsx)(e.h2,{id:"main-resources",children:"Main Resources"}),"\n",(0,i.jsxs)(e.table,{children:[(0,i.jsx)(e.thead,{children:(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.th,{children:"Name"}),(0,i.jsx)(e.th,{children:"Link"})]})}),(0,i.jsxs)(e.tbody,{children:[(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Website"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://status.network",children:"status.network"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Documentation"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://docs.status.network",children:"docs.status.network"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"GitHub"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://github.com/status-im",children:"github.com/status-im"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Monorepo"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://github.com/status-im/status-network-monorepo",children:"github.com/status-im/status-network-monorepo"})})]})]})]}),"\n",(0,i.jsx)(e.h2,{id:"network-tools",children:"Network Tools"}),"\n",(0,i.jsxs)(e.table,{children:[(0,i.jsx)(e.thead,{children:(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.th,{children:"Name"}),(0,i.jsx)(e.th,{children:"Link"})]})}),(0,i.jsxs)(e.tbody,{children:[(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Bridge"}),(0,i.jsxs)(e.td,{children:[(0,i.jsx)(e.a,{href:"https://bridge.status.network",children:"bridge.status.network"})," ",(0,i.jsx)(o.A,{text:"https://bridge.status.network",ariaLabel:"Copy bridge URL"})]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Block Explorer"}),(0,i.jsxs)(e.td,{children:[(0,i.jsx)(e.a,{href:"https://sepoliascan.status.network",children:"sepoliascan.status.network"})," ",(0,i.jsx)(o.A,{text:"https://sepoliascan.status.network",ariaLabel:"Copy block explorer URL"})]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"RPC Endpoint"}),(0,i.jsxs)(e.td,{children:[(0,i.jsx)(e.a,{href:"https://public.sepolia.rpc.status.network",children:"public.sepolia.rpc.status.network"})," ",(0,i.jsx)(o.A,{text:"https://public.sepolia.rpc.status.network",ariaLabel:"Copy RPC endpoint URL"})]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"WebSocket RPC"}),(0,i.jsxs)(e.td,{children:["Get in touch with us on ",(0,i.jsx)(e.a,{href:"https://t.me/statusl2",children:"Telegram"})," to get a websocket RPC"]})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Faucet"}),(0,i.jsxs)(e.td,{children:[(0,i.jsx)(e.a,{href:"https://faucet.status.network",children:"faucet.status.network"})," ",(0,i.jsx)(o.A,{text:"https://faucet.status.network",ariaLabel:"Copy faucet URL"})]})]})]})]}),"\n",(0,i.jsx)(e.h2,{id:"development-resources",children:"Development Resources"}),"\n",(0,i.jsxs)(e.table,{children:[(0,i.jsx)(e.thead,{children:(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.th,{children:"Name"}),(0,i.jsx)(e.th,{children:"Link"})]})}),(0,i.jsxs)(e.tbody,{children:[(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Token List Repository"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://github.com/status-im/status-network-token-list",children:"github.com/status-im/status-network-token-list"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Contract Verification"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://sepoliascan.status.network/contract-verification",children:"sepoliascan.status.network/contract-verification"})})]})]})]}),"\n",(0,i.jsx)(e.h2,{id:"community--support",children:"Community & Support"}),"\n",(0,i.jsxs)(e.table,{children:[(0,i.jsx)(e.thead,{children:(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.th,{children:"Name"}),(0,i.jsx)(e.th,{children:"Link"})]})}),(0,i.jsxs)(e.tbody,{children:[(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"Telegram Community"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://t.me/statusl2",children:"t.me/statusl2"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:"X/twitter"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.a,{href:"https://x.com/statusL2",children:"x.com/statusL2"})})]})]})]}),"\n",(0,i.jsxs)(e.p,{children:["For detailed information about adding the network to your wallet, see our ",(0,i.jsx)(e.a,{href:"/overview/general-info/add-status-network",children:"Add Network guide"}),"."]})]})}function u(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(h,{...t})}):h(t)}},8453:(t,e,s)=>{s.d(e,{R:()=>o,x:()=>c});var r=s(6540);const i={},n=r.createContext(i);function o(t){const e=r.useContext(n);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:o(t.components),r.createElement(n.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/zh/assets/js/1df93b7f.e386b54f.js b/assets/js/1df93b7f.645b59f7.js similarity index 70% rename from zh/assets/js/1df93b7f.e386b54f.js rename to assets/js/1df93b7f.645b59f7.js index 5a2324b..a678284 100644 --- a/zh/assets/js/1df93b7f.e386b54f.js +++ b/assets/js/1df93b7f.645b59f7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[4583],{8198:(e,i,t)=>{t.r(i),t.d(i,{default:()=>u});t(6540);var o=t(2765),s=t(8774),c=t(1312),r=t(6025);const a={hero:"hero_aEcG",heroContent:"heroContent_mKPX",heroLogo:"heroLogo_U6bI",heroSubtitle:"heroSubtitle_jFu1",heroTitle:"heroTitle_qg2I",heroDescription:"heroDescription_UJGW",section:"section_Q9Zo",sectionTitle:"sectionTitle_Ut5p",sectionSubtitle:"sectionSubtitle_AZuW",cardGrid:"cardGrid_nYON",card:"card_M5pr",cardIcon:"cardIcon_I6MN",cardIconOverview:"cardIconOverview_PyVf cardIcon_I6MN",cardIconBuild:"cardIconBuild_yjvz cardIcon_I6MN",cardIconTools:"cardIconTools_oABq cardIcon_I6MN",cardTitle:"cardTitle_tke3",cardDescription:"cardDescription_PVP5",cardLink:"cardLink_zKDM",cardLinkArrow:"cardLinkArrow_c6PI",communityGrid:"communityGrid_iGca",communityCard:"communityCard_CvyA",communityCardTitle:"communityCardTitle_NvRM",communityCardDescription:"communityCardDescription_AUHP",quickStart:"quickStart_s7sE",quickStartInner:"quickStartInner_Sdcd",quickStartText:"quickStartText_XIJF",quickStartButton:"quickStartButton_XrzT"};var n=t(4848);function d(){const e=(0,r.Ay)("/img/sn_logo.svg");return(0,n.jsx)("header",{className:a.hero,children:(0,n.jsxs)("div",{className:a.heroContent,children:[(0,n.jsx)("img",{src:e,alt:"Status Network",className:a.heroLogo,width:72,height:72}),(0,n.jsx)("p",{className:a.heroSubtitle,children:(0,n.jsx)(c.A,{id:"homepage.hero.subtitle",description:"Homepage hero subtitle",children:"Welcome to"})}),(0,n.jsx)("h1",{className:a.heroTitle,children:(0,n.jsx)(c.A,{id:"homepage.hero.title",description:"Homepage hero title",children:"Status Network Documentation"})}),(0,n.jsx)("p",{className:a.heroDescription,children:(0,n.jsx)(c.A,{id:"homepage.hero.description",description:"Homepage hero description",children:"Fully gasless Ethereum L2 with composable privacy and built-in spam protection for humans and bots"})})]})})}function l(){const e=[{title:(0,c.T)({id:"homepage.docCards.overview.title",message:"Overview",description:"Homepage docs card title for Overview"}),description:(0,c.T)({id:"homepage.docCards.overview.description",message:"Learn about Status Network's architecture, gasless transactions, tokenomics, and the sustainable public funding model",description:"Homepage docs card description for Overview"}),link:"/overview",linkText:(0,c.T)({id:"homepage.docCards.overview.linkText",message:"Read More",description:"Homepage docs card link text for Overview"}),iconClass:a.cardIconOverview,icon:"\ud83c\udf10"},{title:(0,c.T)({id:"homepage.docCards.build.title",message:"Build for Karma",description:"Homepage docs card title for Build for Karma"}),description:(0,c.T)({id:"homepage.docCards.build.description",message:"Guides, tutorials, and references for deploying contracts, integrating Karma, and building gasless apps",description:"Homepage docs card description for Build for Karma"}),link:"/build-for-karma",linkText:(0,c.T)({id:"homepage.docCards.build.linkText",message:"Read More",description:"Homepage docs card link text for Build for Karma"}),iconClass:a.cardIconBuild,icon:"\ud83d\udee0"},{title:(0,c.T)({id:"homepage.docCards.tools.title",message:"Tools",description:"Homepage docs card title for Tools"}),description:(0,c.T)({id:"homepage.docCards.tools.description",message:"RPC endpoints, bridges, testnet faucets, block explorers, and infrastructure partners",description:"Homepage docs card description for Tools"}),link:"/tools",linkText:(0,c.T)({id:"homepage.docCards.tools.linkText",message:"Read More",description:"Homepage docs card link text for Tools"}),iconClass:a.cardIconTools,icon:"\u26a1"}];return(0,n.jsxs)("section",{className:a.section,children:[(0,n.jsx)("h2",{className:a.sectionTitle,children:(0,n.jsx)(c.A,{id:"homepage.docs.sectionTitle",description:"Homepage docs section title",children:"Navigate the Docs"})}),(0,n.jsx)("p",{className:a.sectionSubtitle,children:(0,n.jsx)(c.A,{id:"homepage.docs.sectionSubtitle",description:"Homepage docs section subtitle",children:"Start developing on Status Network today"})}),(0,n.jsx)("div",{className:a.cardGrid,children:e.map((e=>(0,n.jsxs)(s.A,{to:e.link,className:a.card,children:[(0,n.jsx)("div",{className:e.iconClass,children:e.icon}),(0,n.jsx)("div",{className:a.cardTitle,children:e.title}),(0,n.jsx)("div",{className:a.cardDescription,children:e.description}),(0,n.jsxs)("span",{className:a.cardLink,children:[e.linkText," ",(0,n.jsx)("span",{className:a.cardLinkArrow,children:"\u2192"})]})]},e.link)))})]})}function m(){return(0,n.jsx)("div",{className:a.quickStart,children:(0,n.jsxs)("div",{className:a.quickStartInner,children:[(0,n.jsxs)("div",{className:a.quickStartText,children:[(0,n.jsx)("h3",{children:(0,n.jsx)(c.A,{id:"homepage.quickStart.title",description:"Homepage quick start title",children:"Ready to build?"})}),(0,n.jsx)("p",{children:(0,n.jsx)(c.A,{id:"homepage.quickStart.description",description:"Homepage quick start description",children:"Set up your wallet, grab testnet tokens, and deploy your first contract in minutes"})})]}),(0,n.jsxs)(s.A,{to:"/overview/introduction/quick-start",className:a.quickStartButton,children:[(0,n.jsx)(c.A,{id:"homepage.quickStart.button",description:"Homepage quick start button label",children:"Quick Start"})," ","\u2192"]})]})})}function p(){const e=[{title:(0,c.T)({id:"homepage.community.telegram.title",message:"Join our Telegram",description:"Homepage community card title for Telegram"}),description:(0,c.T)({id:"homepage.community.telegram.description",message:"Connect with other Status Network builders and get support",description:"Homepage community card description for Telegram"}),href:"https://t.me/statusl2"},{title:(0,c.T)({id:"homepage.community.github.title",message:"View on GitHub",description:"Homepage community card title for GitHub"}),description:(0,c.T)({id:"homepage.community.github.description",message:"Explore the source code and contribute to the ecosystem",description:"Homepage community card description for GitHub"}),href:"https://github.com/status-im"},{title:(0,c.T)({id:"homepage.community.official.title",message:"Official Links",description:"Homepage community card title for official links"}),description:(0,c.T)({id:"homepage.community.official.description",message:"Website, social channels, and all official resources in one place",description:"Homepage community card description for official links"}),href:"/overview/other/official-links"}];return(0,n.jsxs)("section",{className:a.section,children:[(0,n.jsx)("h2",{className:a.sectionTitle,children:(0,n.jsx)(c.A,{id:"homepage.community.sectionTitle",description:"Homepage community section title",children:"Connect with us"})}),(0,n.jsx)("p",{className:a.sectionSubtitle,children:(0,n.jsx)(c.A,{id:"homepage.community.sectionSubtitle",description:"Homepage community section subtitle",children:"Keep up to date with the latest from the Status Network community"})}),(0,n.jsx)("div",{className:a.communityGrid,children:e.map((e=>(0,n.jsxs)(s.A,{to:e.href,className:a.communityCard,children:[(0,n.jsx)("div",{className:a.communityCardTitle,children:e.title}),(0,n.jsx)("div",{className:a.communityCardDescription,children:e.description})]},e.href)))})]})}function u(){return(0,n.jsxs)(o.A,{title:(0,c.T)({id:"homepage.layout.title",message:"Status Network Documentation",description:"Homepage layout title"}),description:(0,c.T)({id:"homepage.layout.description",message:"Documentation for Status Network \u2014 fully gasless Ethereum L2 with composable privacy and built-in spam protection for humans and bots",description:"Homepage layout description"}),children:[(0,n.jsx)(d,{}),(0,n.jsx)(l,{}),(0,n.jsx)(m,{}),(0,n.jsx)(p,{})]})}}}]); \ No newline at end of file +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[4583],{8198:(e,i,t)=>{t.r(i),t.d(i,{default:()=>u});t(6540);var o=t(2765),s=t(8774),r=t(1312),c=t(6025);const a={hero:"hero_aEcG",heroContent:"heroContent_mKPX",heroLogo:"heroLogo_U6bI",heroSubtitle:"heroSubtitle_jFu1",heroTitle:"heroTitle_qg2I",heroDescription:"heroDescription_UJGW",section:"section_Q9Zo",sectionTitle:"sectionTitle_Ut5p",sectionSubtitle:"sectionSubtitle_AZuW",cardGrid:"cardGrid_nYON",card:"card_M5pr",cardIcon:"cardIcon_I6MN",cardIconOverview:"cardIconOverview_PyVf cardIcon_I6MN",cardIconBuild:"cardIconBuild_yjvz cardIcon_I6MN",cardIconTools:"cardIconTools_oABq cardIcon_I6MN",cardTitle:"cardTitle_tke3",cardDescription:"cardDescription_PVP5",cardLink:"cardLink_zKDM",cardLinkArrow:"cardLinkArrow_c6PI",communityGrid:"communityGrid_iGca",communityCard:"communityCard_CvyA",communityCardTitle:"communityCardTitle_NvRM",communityCardDescription:"communityCardDescription_AUHP",quickStart:"quickStart_s7sE",quickStartInner:"quickStartInner_Sdcd",quickStartText:"quickStartText_XIJF",quickStartButton:"quickStartButton_XrzT"};var n=t(4848);function d(){const e=(0,c.Ay)("/img/sn_logo.svg");return(0,n.jsx)("header",{className:a.hero,children:(0,n.jsxs)("div",{className:a.heroContent,children:[(0,n.jsx)("img",{src:e,alt:"Status Network",className:a.heroLogo,width:72,height:72}),(0,n.jsx)("p",{className:a.heroSubtitle,children:(0,n.jsx)(r.A,{id:"homepage.hero.subtitle",description:"Homepage hero subtitle",children:"Welcome to"})}),(0,n.jsx)("h1",{className:a.heroTitle,children:(0,n.jsx)(r.A,{id:"homepage.hero.title",description:"Homepage hero title",children:"Status Network Documentation"})}),(0,n.jsx)("p",{className:a.heroDescription,children:(0,n.jsx)(r.A,{id:"homepage.hero.description",description:"Homepage hero description",children:"Fully gasless Ethereum L2 with composable privacy and built-in spam protection for humans and bots"})})]})})}function l(){const e=[{title:(0,r.T)({id:"homepage.docCards.overview.title",message:"Overview",description:"Homepage docs card title for Overview"}),description:(0,r.T)({id:"homepage.docCards.overview.description",message:"Learn about Status Network's architecture, gasless transactions, tokenomics, and the sustainable public funding model",description:"Homepage docs card description for Overview"}),link:"/overview",linkText:(0,r.T)({id:"homepage.docCards.overview.linkText",message:"Read More",description:"Homepage docs card link text for Overview"}),iconClass:a.cardIconOverview,icon:"\ud83c\udf10"},{title:(0,r.T)({id:"homepage.docCards.build.title",message:"Build for Karma",description:"Homepage docs card title for Build for Karma"}),description:(0,r.T)({id:"homepage.docCards.build.description",message:"Guides, tutorials, and references for deploying contracts, integrating Karma, and building gasless apps",description:"Homepage docs card description for Build for Karma"}),link:"/build-for-karma",linkText:(0,r.T)({id:"homepage.docCards.build.linkText",message:"Read More",description:"Homepage docs card link text for Build for Karma"}),iconClass:a.cardIconBuild,icon:"\ud83d\udee0"},{title:(0,r.T)({id:"homepage.docCards.tools.title",message:"Tools",description:"Homepage docs card title for Tools"}),description:(0,r.T)({id:"homepage.docCards.tools.description",message:"RPC endpoints, bridges, testnet faucets, block explorers, and infrastructure partners",description:"Homepage docs card description for Tools"}),link:"/tools",linkText:(0,r.T)({id:"homepage.docCards.tools.linkText",message:"Read More",description:"Homepage docs card link text for Tools"}),iconClass:a.cardIconTools,icon:"\u26a1"}];return(0,n.jsxs)("section",{className:a.section,children:[(0,n.jsx)("h2",{className:a.sectionTitle,children:(0,n.jsx)(r.A,{id:"homepage.docs.sectionTitle",description:"Homepage docs section title",children:"Navigate the Docs"})}),(0,n.jsx)("p",{className:a.sectionSubtitle,children:(0,n.jsx)(r.A,{id:"homepage.docs.sectionSubtitle",description:"Homepage docs section subtitle",children:"Start developing on Status Network today"})}),(0,n.jsx)("div",{className:a.cardGrid,children:e.map((e=>(0,n.jsxs)(s.A,{to:e.link,className:a.card,children:[(0,n.jsx)("div",{className:e.iconClass,children:e.icon}),(0,n.jsx)("div",{className:a.cardTitle,children:e.title}),(0,n.jsx)("div",{className:a.cardDescription,children:e.description}),(0,n.jsxs)("span",{className:a.cardLink,children:[e.linkText," ",(0,n.jsx)("span",{className:a.cardLinkArrow,children:"\u2192"})]})]},e.link)))})]})}function m(){return(0,n.jsx)("div",{className:a.quickStart,children:(0,n.jsxs)("div",{className:a.quickStartInner,children:[(0,n.jsxs)("div",{className:a.quickStartText,children:[(0,n.jsx)("h3",{children:(0,n.jsx)(r.A,{id:"homepage.quickStart.title",description:"Homepage quick start title",children:"Ready to build?"})}),(0,n.jsx)("p",{children:(0,n.jsx)(r.A,{id:"homepage.quickStart.description",description:"Homepage quick start description",children:"Set up your wallet, grab testnet tokens, and deploy your first contract in minutes"})})]}),(0,n.jsxs)(s.A,{to:"/overview/introduction/quick-start",className:a.quickStartButton,children:[(0,n.jsx)(r.A,{id:"homepage.quickStart.button",description:"Homepage quick start button label",children:"Quick Start"})," ","\u2192"]})]})})}function p(){const e=[{title:(0,r.T)({id:"homepage.community.telegram.title",message:"Join our Telegram",description:"Homepage community card title for Telegram"}),description:(0,r.T)({id:"homepage.community.telegram.description",message:"Connect with other Status Network builders and get support",description:"Homepage community card description for Telegram"}),href:"https://t.me/statusl2"},{title:(0,r.T)({id:"homepage.community.github.title",message:"View on GitHub",description:"Homepage community card title for GitHub"}),description:(0,r.T)({id:"homepage.community.github.description",message:"Explore the source code and contribute to the ecosystem",description:"Homepage community card description for GitHub"}),href:"https://github.com/status-im"},{title:(0,r.T)({id:"homepage.community.official.title",message:"Official Links",description:"Homepage community card title for official links"}),description:(0,r.T)({id:"homepage.community.official.description",message:"Website, social channels, and all official resources in one place",description:"Homepage community card description for official links"}),href:"/overview/other/official-links"}];return(0,n.jsxs)("section",{className:a.section,children:[(0,n.jsx)("h2",{className:a.sectionTitle,children:(0,n.jsx)(r.A,{id:"homepage.community.sectionTitle",description:"Homepage community section title",children:"Connect with us"})}),(0,n.jsx)("p",{className:a.sectionSubtitle,children:(0,n.jsx)(r.A,{id:"homepage.community.sectionSubtitle",description:"Homepage community section subtitle",children:"Keep up to date with the latest from the Status Network community"})}),(0,n.jsx)("div",{className:a.communityGrid,children:e.map((e=>(0,n.jsxs)(s.A,{to:e.href,className:a.communityCard,children:[(0,n.jsx)("div",{className:a.communityCardTitle,children:e.title}),(0,n.jsx)("div",{className:a.communityCardDescription,children:e.description})]},e.href)))})]})}function u(){return(0,n.jsxs)(o.A,{title:(0,r.T)({id:"homepage.layout.title",message:"Status Network Docs: Gasless L2 & Reputation System",description:"Homepage layout title"}),description:(0,r.T)({id:"homepage.layout.description",message:"Official Status Network docs for the gasless Ethereum L2. Learn about Karma reputation, RLN spam protection, and native yield for both humans and bots.",description:"Homepage layout description"}),children:[(0,n.jsx)(d,{}),(0,n.jsx)(l,{}),(0,n.jsx)(m,{}),(0,n.jsx)(p,{})]})}}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.cafa2b28.js b/assets/js/22dd74f7.cafa2b28.js new file mode 100644 index 0000000..37a7c9f --- /dev/null +++ b/assets/js/22dd74f7.cafa2b28.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[1567],{5226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"homeSidebar":[{"type":"category","label":"INTRODUCTION","collapsed":false,"items":[{"type":"link","href":"/overview","label":"\ud83c\udf34 Home","docId":"overview/index","unlisted":false},{"type":"link","href":"/overview/introduction/quick-start","label":"\u26a1 Quick Start","docId":"overview/introduction/quick-start","unlisted":false}],"collapsible":true},{"type":"category","label":"TOKENOMICS","collapsed":false,"items":[{"type":"link","href":"/overview/tokenomics/economic-model","label":"\ud83e\udd1d Economic Model","docId":"overview/tokenomics/economic-model","unlisted":false},{"type":"link","href":"/overview/tokenomics/public-funding","label":"\ud83d\udcb0 Public Funding","docId":"overview/tokenomics/public-funding","unlisted":false},{"type":"link","href":"/overview/tokenomics/karmic-tokenomics","label":"\ud83d\udc09 Karmic Tokenomics","docId":"overview/tokenomics/karmic-tokenomics","unlisted":false},{"type":"link","href":"/overview/tokenomics/snt-staking","label":"\ud83d\udc8e SNT Staking","docId":"overview/tokenomics/snt-staking","unlisted":false},{"type":"link","href":"/overview/tokenomics/pre-deposits","label":"\ud83d\udcb0 Pre-Deposits","docId":"overview/tokenomics/pre-deposits","unlisted":false}],"collapsible":true},{"type":"category","label":"GENERAL INFO","collapsed":false,"items":[{"type":"link","href":"/overview/general-info/network-details","label":"\ud83c\udf10 Network Details","docId":"overview/general-info/network-details","unlisted":false},{"type":"link","href":"/overview/general-info/gasless-transactions","label":"\u26fd Gasless Transactions","docId":"overview/general-info/gasless-transactions","unlisted":false},{"type":"link","href":"/overview/general-info/add-status-network","label":"\u2795 Add Status Network","docId":"overview/general-info/add-status-network","unlisted":false},{"type":"category","label":"\ud83c\udfe1 Contract Addresses","collapsed":false,"items":[{"type":"link","href":"/overview/general-info/contract-addresses/tokens","label":"\ud83e\ude99 Tokens","docId":"overview/general-info/contract-addresses/tokens","unlisted":false},{"type":"link","href":"/overview/general-info/contract-addresses/testnet-contracts","label":"\ud83e\uddea Testnet Contracts","docId":"overview/general-info/contract-addresses/testnet-contracts","unlisted":false},{"type":"link","href":"/overview/general-info/contract-addresses/pre-deposit","label":"\ud83d\udcb0 Pre-Deposit Vault Contracts","docId":"overview/general-info/contract-addresses/pre-deposit","unlisted":false}],"collapsible":true},{"type":"category","label":"\ud83c\udf09 Bridge","collapsed":false,"items":[{"type":"link","href":"/overview/general-info/bridge/bridging-testnet","label":"\ud83e\uddea Bridging Testnet","docId":"overview/general-info/bridge/bridging-testnet","unlisted":false}],"collapsible":true}],"collapsible":true},{"type":"category","label":"OTHER DOCS","collapsed":false,"items":[{"type":"link","href":"/overview/other/official-links","label":"\ud83d\udd17 Official Links","docId":"overview/other/official-links","unlisted":false}],"collapsible":true}],"buildForKarmaSidebar":[{"type":"category","label":"BUILD FOR KARMA","collapsed":false,"items":[{"type":"link","href":"/build-for-karma/why-status-network","label":"\ud83c\udf1f Why Status Network","docId":"build-for-karma/why-status-network","unlisted":false},{"type":"link","href":"/build-for-karma/what-to-build","label":"\ud83d\udca1 What to Build","docId":"build-for-karma/what-to-build","unlisted":false}],"collapsible":true,"href":"/build-for-karma"},{"type":"category","label":"USING KARMA","collapsed":false,"items":[{"type":"link","href":"/build-for-karma/guides/gasless-integration","label":"\u26fd Gasless Integration","docId":"build-for-karma/guides/gasless-integration","unlisted":false},{"type":"link","href":"/build-for-karma/guides/reputation-integration","label":"\ud83d\udd30 Reputation Integration","docId":"build-for-karma/guides/reputation-integration","unlisted":false}],"collapsible":true,"href":"/build-for-karma/guides"},{"type":"category","label":"DEPLOYING CONTRACTS","collapsed":false,"items":[{"type":"link","href":"/build-for-karma/deploying-contracts/using-hardhat","label":"\ud83c\udfa9 Using Hardhat","docId":"build-for-karma/deploying-contracts/using-hardhat","unlisted":false},{"type":"link","href":"/build-for-karma/deploying-contracts/using-foundry","label":"\u2692\ufe0f Using Foundry","docId":"build-for-karma/deploying-contracts/using-foundry","unlisted":false},{"type":"link","href":"/build-for-karma/deploying-contracts/using-remix","label":"\ud83c\udf9b\ufe0f Using Remix","docId":"build-for-karma/deploying-contracts/using-remix","unlisted":false},{"type":"link","href":"/build-for-karma/deploying-contracts/using-se2","label":"\ud83c\udfd7 Using Scaffold-ETH 2","docId":"build-for-karma/deploying-contracts/using-se2","unlisted":false}],"collapsible":true,"href":"/build-for-karma/deploying-contracts"}],"toolsSidebar":[{"type":"category","label":"TOOLS","collapsed":false,"items":[{"type":"category","label":"CORE INFRASTRUCTURE","collapsed":false,"items":[{"type":"link","href":"/tools/core-infrastructure/rpc-endpoints","label":"\ud83d\udce1 RPC Endpoints","docId":"tools/core-infrastructure/rpc-endpoints","unlisted":false},{"type":"link","href":"/tools/core-infrastructure/bridge","label":"\ud83c\udf09 Bridge","docId":"tools/core-infrastructure/bridge","unlisted":false},{"type":"link","href":"/tools/core-infrastructure/testnet-faucets","label":"\ud83d\udeb0 Testnet Faucets","docId":"tools/core-infrastructure/testnet-faucets","unlisted":false},{"type":"link","href":"/tools/core-infrastructure/block-explorers","label":"\ud83d\udd0e Block Explorers","docId":"tools/core-infrastructure/block-explorers","unlisted":false}],"collapsible":true},{"type":"category","label":"RPC","collapsed":false,"items":[{"type":"link","href":"/tools/rpc/json-rpc","label":"\ud83d\udd0c JSON-RPC API","docId":"tools/rpc/json-rpc","unlisted":false},{"type":"link","href":"/tools/rpc/running-an-rpc","label":"\ud83c\udf10 Running an RPC Node","docId":"tools/rpc/running-an-rpc","unlisted":false}],"collapsible":true},{"type":"category","label":"ETHEREUM COMPATIBILITY","collapsed":false,"items":[{"type":"link","href":"/tools/ethereum-compatibility/ethereum-differences","label":"\ud83d\udd00 Ethereum Differences","docId":"tools/ethereum-compatibility/ethereum-differences","unlisted":false}],"collapsible":true}],"collapsible":true,"href":"/tools"},{"type":"category","label":"PARTNERS","collapsed":false,"items":[{"type":"link","href":"/tools/infrastructure","label":"\ud83e\udd1d Infrastructure Partners","docId":"tools/infrastructure","unlisted":false}],"collapsible":true}]},"docs":{"build-for-karma/build-for-karma-index":{"id":"build-for-karma/build-for-karma-index","title":"Build for Karma: Developer Guides for the Gasless L2","description":"Ship on Status Network using our guides for gasless integration and Karma reputation. Access tools for contract deployment and private agentic workflows.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/deploying-contracts-index":{"id":"build-for-karma/deploying-contracts/deploying-contracts-index","title":"Deploy Your First Contract: Gasless Development Guide","description":"Choose your deployment tool for Status Network. Step-by-step guides for Hardhat, Foundry, and Remix to get your smart contracts live on our gasless L2.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-foundry":{"id":"build-for-karma/deploying-contracts/using-foundry","title":"Using Foundry: Testing & Deploying on Status Network","description":"Comprehensive guide to using Foundry on Status Network. Deploy, test, and interact with smart contracts on our gasless L2 using Forge and Cast tools.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-hardhat":{"id":"build-for-karma/deploying-contracts/using-hardhat","title":"Using Hardhat: Smart Contract Deployment on Status","description":"Tutorial for deploying on Status Network using Hardhat and TypeScript. Configure your environment for gasless transactions and reputation-aware dApps.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-remix":{"id":"build-for-karma/deploying-contracts/using-remix","title":"Using Remix IDE: Deploy Gasless Contracts on Status","description":"A beginner-friendly guide to deploying Solidity contracts on Status Network via Remix IDE. Setup your wallet and interact with our gasless L2 testnet.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-se2":{"id":"build-for-karma/deploying-contracts/using-se2","title":"Using Scaffold-ETH 2: Deploy on Status Network L2","description":"Deploy smart contracts on Status Network with Scaffold-ETH 2. A quick start for developers to integrate gasless UX and reputation-aware project features.","sidebar":"buildForKarmaSidebar"},"build-for-karma/guides/gasless-integration":{"id":"build-for-karma/guides/gasless-integration","title":"Gasless Integration Guide: Building Zero-Fee Web3 UX","description":"Integrate gasless UX on Status Network. Use the linea_estimateGas method and Karma-aware fee estimation to build seamless, fee-free dApps for all users.","sidebar":"buildForKarmaSidebar"},"build-for-karma/guides/index":{"id":"build-for-karma/guides/index","title":"Using Karma: Integration Guides for Reputation Logic","description":"Developer entry point for Karma. Learn to integrate reputation-aware features, gate content by tier, and utilize gasless execution on Status Network L2.","sidebar":"buildForKarmaSidebar"},"build-for-karma/guides/reputation-integration":{"id":"build-for-karma/guides/reputation-integration","title":"Reputation Guide: Read Karma Tiers & Smart Contracts","description":"Learn to read Karma tiers on-chain. Build reputation-aware smart contracts that gate features and enable gasless interactions based on user contribution.","sidebar":"buildForKarmaSidebar"},"build-for-karma/what-to-build":{"id":"build-for-karma/what-to-build","title":"What to Build: High-Leverage Ideas for Status Network","description":"Explore app ideas for Status Network: private DeFi, gasless social apps, and agentic markets. Leverage Karma reputation and RLN-based spam protection.","sidebar":"buildForKarmaSidebar"},"build-for-karma/why-status-network":{"id":"build-for-karma/why-status-network","title":"Why Build on Status: Gasless Execution for Humans & Bots","description":"The case for building on Status Network: predictable costs, zero-gas execution, and LVR reduction for bots through per-block liquidity rebalancing tools.","sidebar":"buildForKarmaSidebar"},"overview/general-info/add-status-network":{"id":"overview/general-info/add-status-network","title":"Add Status Network: MetaMask & Wallet Setup Guide","description":"Learn how to add Status Network to MetaMask and other wallets. Manual configuration steps for desktop and mobile to access our gasless L2 environment.","sidebar":"homeSidebar"},"overview/general-info/bridge/bridging-testnet":{"id":"overview/general-info/bridge/bridging-testnet","title":"Bridging Guide: Transfer Assets to Status Testnet","description":"Step-by-step instructions for bridging tokens to Status Network. Learn the process for moving assets from Sepolia to our reputation-based gasless L2.","sidebar":"homeSidebar"},"overview/general-info/contract-addresses/pre-deposit":{"id":"overview/general-info/contract-addresses/pre-deposit","title":"Pre-Deposit Vaults: Status Network Campaign Links","description":"View the official vault addresses for the Status Network pre-deposit campaign. Participate in early staking and liquidity provision to earn early Karma.","sidebar":"homeSidebar"},"overview/general-info/contract-addresses/testnet-contracts":{"id":"overview/general-info/contract-addresses/testnet-contracts","title":"Testnet Contracts: Core Status Network Addresses","description":"Official list of testnet contract addresses for Status Network. Access bridge, infrastructure, and core reputation contracts for developer integration.","sidebar":"homeSidebar"},"overview/general-info/contract-addresses/tokens":{"id":"overview/general-info/contract-addresses/tokens","title":"Tokens: Official Contract Addresses on Status Network","description":"Directory of supported tokens on Status Network. Find L1 and L2 contract addresses for ETH, stablecoins, and SNT used within our gasless ecosystem.","sidebar":"homeSidebar"},"overview/general-info/gasless-transactions":{"id":"overview/general-info/gasless-transactions","title":"Gasless Transactions: RLN & Reputation-Based Access","description":"How Status Network enables gasless transactions using Rate Limiting Nullifiers (RLN). Decouple identity from execution with ephemeral, private accounts.","sidebar":"homeSidebar"},"overview/general-info/network-details":{"id":"overview/general-info/network-details","title":"Network Details: Status Network Chain ID & Config","description":"Official network configuration for Status Network. Find Chain IDs, RPC URLs, and block explorer links for wallet setup and developer environment config.","sidebar":"homeSidebar"},"overview/general-info/privacy":{"id":"overview/general-info/privacy","title":"How Status Network connects to Privacy","description":""},"overview/index":{"id":"overview/index","title":"Status Network Overview: The Gasless Layer 2 Solution","description":"Explore Status Network, a gasless Ethereum L2 using RLN for spam protection. Earn Karma reputation to unlock free transactions and native yield governance.","sidebar":"homeSidebar"},"overview/introduction/quick-start":{"id":"overview/introduction/quick-start","title":"Quick Start Guide: Deploy on Status Network Gasless L2","description":"Get started on Status Network in under 10 minutes. Deploy smart contracts using Remix, fetch test ETH, and interact with our gasless execution environment.","sidebar":"homeSidebar"},"overview/other/official-links":{"id":"overview/other/official-links","title":"Official Links: Status Network Resources & Communities","description":"Access the directory for Status Network: mainnet links, bridge tools, faucet access, and developer communities for our reputation-based L2 infrastructure.","sidebar":"homeSidebar"},"overview/tokenomics/economic-model":{"id":"overview/tokenomics/economic-model","title":"Economic Model: Yield-Backed Network Sustainability","description":"Status Network\'s economic model: replacing gas fees with native yield from L1 staking and lending. Sustainable funding for a truly gasless L2 ecosystem.","sidebar":"homeSidebar"},"overview/tokenomics/karmic-tokenomics":{"id":"overview/tokenomics/karmic-tokenomics","title":"Karmic Tokenomics: Earn Reputation & Governance Power","description":"Detailed guide to Karmic Tokenomics. Learn how soulbound Karma governs transaction throughput, native yield distribution, and network-level spam slashing.","sidebar":"homeSidebar"},"overview/tokenomics/pre-deposits":{"id":"overview/tokenomics/pre-deposits","title":"Pre-Deposits: Vault Architecture & Yield Strategies","description":"Technical overview of Status Network pre-deposit vaults. Earn Karma by bridging SNT, ETH, or stablecoins into Aragon-based yield-generating strategies.","sidebar":"homeSidebar"},"overview/tokenomics/public-funding":{"id":"overview/tokenomics/public-funding","title":"Public Funding: Yield Allocation & Developer Grants","description":"Overview of Status Network\'s funding pool. Learn how native yield is governed by Karma holders to fund builders, liquidity, and public goods on our L2.","sidebar":"homeSidebar"},"overview/tokenomics/snt-staking":{"id":"overview/tokenomics/snt-staking","title":"SNT Staking: Secure the Network & Earn Reputation","description":"Staking SNT on Status Network. Earn Karma multipliers, unlock higher gasless transaction tiers, and participate in reputation-based network governance.","sidebar":"homeSidebar"},"tools/core-infrastructure/block-explorers":{"id":"tools/core-infrastructure/block-explorers","title":"Block Explorers: View Status Network Transactions","description":"Monitor gasless transactions on Status Network. Use our block explorers to verify smart contracts and track on-chain activity for mainnet and testnet.","sidebar":"toolsSidebar"},"tools/core-infrastructure/bridge":{"id":"tools/core-infrastructure/bridge","title":"Testnet Bridge: Move Tokens to Status Network L2","description":"Official bridge guide for Status Network. Transfer ETH and tokens between Sepolia and our gasless L2 to start building with reputation-based access.","sidebar":"toolsSidebar"},"tools/core-infrastructure/rpc-endpoints":{"id":"tools/core-infrastructure/rpc-endpoints","title":"Status Network RPC: Public Endpoints & Configuration","description":"Access official Status Network RPC endpoints. Configure MetaMask or your dApp for gasless execution using our rate-limited, privacy-preserving infrastructure.","sidebar":"toolsSidebar"},"tools/core-infrastructure/testnet-faucets":{"id":"tools/core-infrastructure/testnet-faucets","title":"Testnet Faucets: Get ETH & STT for Status Network","description":"Obtain test tokens for Status Network development. Use our faucets to get ETH and STT to test gasless execution and Karma-based reputation mechanics.","sidebar":"toolsSidebar"},"tools/ethereum-compatibility/ethereum-differences":{"id":"tools/ethereum-compatibility/ethereum-differences","title":"Differences between Ethereum and Status Network","description":"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.","sidebar":"toolsSidebar"},"tools/infrastructure":{"id":"tools/infrastructure","title":"Infrastructure Partners: RPC & Tooling for Status","description":"Discover infrastructure partners on Status Network. Access RPC providers, oracles, and indexers to scale your gasless dApps and agentic DeFi strategies.","sidebar":"toolsSidebar"},"tools/rpc/json-rpc":{"id":"tools/rpc/json-rpc","title":"JSON-RPC API: Status Network Extensions & Reference","description":"Status Network JSON-RPC API reference. Explore custom extensions for gasless transactions, RLN proofs, and Karma-aware fee estimation for developers.","sidebar":"toolsSidebar"},"tools/rpc/running-an-rpc":{"id":"tools/rpc/running-an-rpc","title":"Run an RPC Node: Self-Host Status Network Infra","description":"Guide to setting up a self-hosted RPC node for Status Network. Learn about node configuration, maintenance, and providing reliable infra for gasless apps.","sidebar":"toolsSidebar"},"tools/tools-index":{"id":"tools/tools-index","title":"Tools & Infrastructure: Build on the Gasless Network","description":"Developer tools for Status Network: RPC endpoints, bridges, and faucets. Build private, spam-resistant dApps using our native reputation-based execution.","sidebar":"toolsSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.ef58de76.js b/assets/js/22dd74f7.ef58de76.js deleted file mode 100644 index be0da8d..0000000 --- a/assets/js/22dd74f7.ef58de76.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[1567],{5226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"homeSidebar":[{"type":"category","label":"INTRODUCTION","collapsed":false,"items":[{"type":"link","href":"/overview","label":"\ud83c\udf34 Home","docId":"overview/index","unlisted":false},{"type":"link","href":"/overview/introduction/quick-start","label":"\u26a1 Quick Start","docId":"overview/introduction/quick-start","unlisted":false}],"collapsible":true},{"type":"category","label":"TOKENOMICS","collapsed":false,"items":[{"type":"link","href":"/overview/tokenomics/economic-model","label":"\ud83e\udd1d Economic Model","docId":"overview/tokenomics/economic-model","unlisted":false},{"type":"link","href":"/overview/tokenomics/public-funding","label":"\ud83d\udcb0 Public Funding","docId":"overview/tokenomics/public-funding","unlisted":false},{"type":"link","href":"/overview/tokenomics/karmic-tokenomics","label":"\ud83d\udc09 Karmic Tokenomics","docId":"overview/tokenomics/karmic-tokenomics","unlisted":false},{"type":"link","href":"/overview/tokenomics/snt-staking","label":"\ud83d\udc8e SNT Staking","docId":"overview/tokenomics/snt-staking","unlisted":false},{"type":"link","href":"/overview/tokenomics/pre-deposits","label":"\ud83d\udcb0 Pre-Deposits","docId":"overview/tokenomics/pre-deposits","unlisted":false}],"collapsible":true},{"type":"category","label":"GENERAL INFO","collapsed":false,"items":[{"type":"link","href":"/overview/general-info/network-details","label":"\ud83c\udf10 Network Details","docId":"overview/general-info/network-details","unlisted":false},{"type":"link","href":"/overview/general-info/gasless-transactions","label":"\u26fd Gasless Transactions","docId":"overview/general-info/gasless-transactions","unlisted":false},{"type":"link","href":"/overview/general-info/add-status-network","label":"\u2795 Add Status Network","docId":"overview/general-info/add-status-network","unlisted":false},{"type":"category","label":"\ud83c\udfe1 Contract Addresses","collapsed":false,"items":[{"type":"link","href":"/overview/general-info/contract-addresses/tokens","label":"\ud83e\ude99 Tokens","docId":"overview/general-info/contract-addresses/tokens","unlisted":false},{"type":"link","href":"/overview/general-info/contract-addresses/testnet-contracts","label":"\ud83e\uddea Testnet Contracts","docId":"overview/general-info/contract-addresses/testnet-contracts","unlisted":false},{"type":"link","href":"/overview/general-info/contract-addresses/pre-deposit","label":"\ud83d\udcb0 Pre-Deposit Vault Contracts","docId":"overview/general-info/contract-addresses/pre-deposit","unlisted":false}],"collapsible":true},{"type":"category","label":"\ud83c\udf09 Bridge","collapsed":false,"items":[{"type":"link","href":"/overview/general-info/bridge/bridging-testnet","label":"\ud83e\uddea Bridging Testnet","docId":"overview/general-info/bridge/bridging-testnet","unlisted":false}],"collapsible":true}],"collapsible":true},{"type":"category","label":"OTHER DOCS","collapsed":false,"items":[{"type":"link","href":"/overview/other/official-links","label":"\ud83d\udd17 Official Links","docId":"overview/other/official-links","unlisted":false}],"collapsible":true}],"buildForKarmaSidebar":[{"type":"category","label":"BUILD FOR KARMA","collapsed":false,"items":[{"type":"link","href":"/build-for-karma/why-status-network","label":"\ud83c\udf1f Why Status Network","docId":"build-for-karma/why-status-network","unlisted":false},{"type":"link","href":"/build-for-karma/what-to-build","label":"\ud83d\udca1 What to Build","docId":"build-for-karma/what-to-build","unlisted":false}],"collapsible":true,"href":"/build-for-karma"},{"type":"category","label":"USING KARMA","collapsed":false,"items":[{"type":"link","href":"/build-for-karma/guides/gasless-integration","label":"\u26fd Gasless Integration","docId":"build-for-karma/guides/gasless-integration","unlisted":false},{"type":"link","href":"/build-for-karma/guides/reputation-integration","label":"\ud83d\udd30 Reputation Integration","docId":"build-for-karma/guides/reputation-integration","unlisted":false}],"collapsible":true,"href":"/build-for-karma/guides"},{"type":"category","label":"DEPLOYING CONTRACTS","collapsed":false,"items":[{"type":"link","href":"/build-for-karma/deploying-contracts/using-hardhat","label":"\ud83c\udfa9 Using Hardhat","docId":"build-for-karma/deploying-contracts/using-hardhat","unlisted":false},{"type":"link","href":"/build-for-karma/deploying-contracts/using-foundry","label":"\u2692\ufe0f Using Foundry","docId":"build-for-karma/deploying-contracts/using-foundry","unlisted":false},{"type":"link","href":"/build-for-karma/deploying-contracts/using-remix","label":"\ud83c\udf9b\ufe0f Using Remix","docId":"build-for-karma/deploying-contracts/using-remix","unlisted":false},{"type":"link","href":"/build-for-karma/deploying-contracts/using-se2","label":"\ud83c\udfd7 Using Scaffold-ETH 2","docId":"build-for-karma/deploying-contracts/using-se2","unlisted":false}],"collapsible":true,"href":"/build-for-karma/deploying-contracts"}],"toolsSidebar":[{"type":"category","label":"TOOLS","collapsed":false,"items":[{"type":"category","label":"CORE INFRASTRUCTURE","collapsed":false,"items":[{"type":"link","href":"/tools/core-infrastructure/rpc-endpoints","label":"\ud83d\udce1 RPC Endpoints","docId":"tools/core-infrastructure/rpc-endpoints","unlisted":false},{"type":"link","href":"/tools/core-infrastructure/bridge","label":"\ud83c\udf09 Bridge","docId":"tools/core-infrastructure/bridge","unlisted":false},{"type":"link","href":"/tools/core-infrastructure/testnet-faucets","label":"\ud83d\udeb0 Testnet Faucets","docId":"tools/core-infrastructure/testnet-faucets","unlisted":false},{"type":"link","href":"/tools/core-infrastructure/block-explorers","label":"\ud83d\udd0e Block Explorers","docId":"tools/core-infrastructure/block-explorers","unlisted":false}],"collapsible":true},{"type":"category","label":"RPC","collapsed":false,"items":[{"type":"link","href":"/tools/rpc/json-rpc","label":"\ud83d\udd0c JSON-RPC API","docId":"tools/rpc/json-rpc","unlisted":false},{"type":"link","href":"/tools/rpc/running-an-rpc","label":"\ud83c\udf10 Running an RPC Node","docId":"tools/rpc/running-an-rpc","unlisted":false}],"collapsible":true},{"type":"category","label":"ETHEREUM COMPATIBILITY","collapsed":false,"items":[{"type":"link","href":"/tools/ethereum-compatibility/ethereum-differences","label":"\ud83d\udd00 Ethereum Differences","docId":"tools/ethereum-compatibility/ethereum-differences","unlisted":false}],"collapsible":true}],"collapsible":true,"href":"/tools"},{"type":"category","label":"PARTNERS","collapsed":false,"items":[{"type":"link","href":"/tools/infrastructure","label":"\ud83e\udd1d Infrastructure Partners","docId":"tools/infrastructure","unlisted":false}],"collapsible":true}]},"docs":{"build-for-karma/build-for-karma-index":{"id":"build-for-karma/build-for-karma-index","title":"Build for Karma","description":"Everything builders need to ship on Status Network \u2014 guides for gasless and reputation integration, deployment tutorials, and app ideas.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/deploying-contracts-index":{"id":"build-for-karma/deploying-contracts/deploying-contracts-index","title":"Deploy Your First Contract","description":"Choose your preferred deployment tool to get a smart contract live on Status Network. Guides available for Hardhat, Foundry, Remix, and Scaffold-ETH 2.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-foundry":{"id":"build-for-karma/deploying-contracts/using-foundry","title":"Using Foundry with Status Network","description":"Comprehensive guide to deploying and testing smart contracts on Status Network using Foundry. Learn about project setup, deployment scripts, testing, and contract interaction using Cast.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-hardhat":{"id":"build-for-karma/deploying-contracts/using-hardhat","title":"Using Hardhat with Status Network","description":"Step-by-step tutorial for deploying smart contracts on Status Network using Hardhat and TypeScript. Learn about project setup, configuration, and contract deployment.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-remix":{"id":"build-for-karma/deploying-contracts/using-remix","title":"Using Remix with Status Network","description":"Learn how to deploy smart contracts on Status Network using Remix IDE. Beginner-friendly guide with step-by-step instructions for contract deployment and interaction.","sidebar":"buildForKarmaSidebar"},"build-for-karma/deploying-contracts/using-se2":{"id":"build-for-karma/deploying-contracts/using-se2","title":"Using Scaffold-ETH 2 with Status Network","description":"Quick start guide for deploying smart contracts on Status Network using the pre-configured Scaffold-ETH 2 extension.","sidebar":"buildForKarmaSidebar"},"build-for-karma/guides/gasless-integration":{"id":"build-for-karma/guides/gasless-integration","title":"Gasless Integration Guide","description":"Practical integration guide for building gasless UX on Status Network.","sidebar":"buildForKarmaSidebar"},"build-for-karma/guides/index":{"id":"build-for-karma/guides/index","title":"Using Karma","description":"Entry point for integrating Karma-based gasless UX and reputation-aware features on Status Network.","sidebar":"buildForKarmaSidebar"},"build-for-karma/guides/reputation-integration":{"id":"build-for-karma/guides/reputation-integration","title":"Reputation Integration Guide","description":"How to read Karma tiers, gate features by reputation, and build Karma-aware smart contracts and frontends on Status Network.","sidebar":"buildForKarmaSidebar"},"build-for-karma/what-to-build":{"id":"build-for-karma/what-to-build","title":"What to Build on Status Network","description":"A scan-first catalog of high-leverage app ideas for Status Network, organized by category, effort, and delivery profile.","sidebar":"buildForKarmaSidebar"},"build-for-karma/why-status-network":{"id":"build-for-karma/why-status-network","title":"Why Build on Status Network","description":"The case for building on Status Network \u2014 gasless transactions, Karma reputation, sustainable public funding, and how it compares to other L2s.","sidebar":"buildForKarmaSidebar"},"overview/general-info/add-status-network":{"id":"overview/general-info/add-status-network","title":"Add Status Network","description":"Step-by-step guide on how to add Status Network to MetaMask and other wallets. Learn how to configure network settings for both desktop and mobile wallets.","sidebar":"homeSidebar"},"overview/general-info/bridge/bridging-testnet":{"id":"overview/general-info/bridge/bridging-testnet","title":"Bridging to Status Network Testnet","description":"Learn how to bridge tokens between Sepolia and Status Network testnet using the official Status Network bridge. Complete guide with prerequisites and step-by-step instructions.","sidebar":"homeSidebar"},"overview/general-info/contract-addresses/pre-deposit":{"id":"overview/general-info/contract-addresses/pre-deposit","title":"Pre-Deposit Vault Contracts","description":"List of Status Network pre-deposit campaign vault addresses.","sidebar":"homeSidebar"},"overview/general-info/contract-addresses/testnet-contracts":{"id":"overview/general-info/contract-addresses/testnet-contracts","title":"Testnet Contracts","description":"Comprehensive list of Status Network testnet contract addresses, including bridge contracts, core infrastructure, and L2 contracts with their purposes and links to block explorers.","sidebar":"homeSidebar"},"overview/general-info/contract-addresses/tokens":{"id":"overview/general-info/contract-addresses/tokens","title":"Tokens","description":"Official list of supported tokens and their contract addresses on Status Network, including both L1 and L2 token addresses and bridge mappings.","sidebar":"homeSidebar"},"overview/general-info/gasless-transactions":{"id":"overview/general-info/gasless-transactions","title":"Gasless Transactions on Status Network","description":"Learn how Status Network implements gasless transactions using RLN (Rate Limiting Nullifier), and Karma tiers for spam prevention and fair usage.","sidebar":"homeSidebar"},"overview/general-info/network-details":{"id":"overview/general-info/network-details","title":"Status Network Details & Configuration","description":"Official network details for Status Network testnet including RPC endpoints, Chain ID, and configuration information for wallets and development environments.","sidebar":"homeSidebar"},"overview/general-info/privacy":{"id":"overview/general-info/privacy","title":"How Status Network connects to Privacy","description":""},"overview/index":{"id":"overview/index","title":"Status Network \xb7 Gasless L2","description":"Status Network is a gasless Layer 2 blockchain network enabling seamless, fee-free decentralized applications. Start building with easy wallet setup, faucets, and deployment tools.","sidebar":"homeSidebar"},"overview/introduction/quick-start":{"id":"overview/introduction/quick-start","title":"Quick Start","description":"Get started with Status Network in under 10 minutes. Learn how to deploy your first smart contract using Remix IDE, get test ETH, and interact with the network.","sidebar":"homeSidebar"},"overview/other/official-links":{"id":"overview/other/official-links","title":"Official Links","description":"Complete directory of official Status Network resources, including main website, tools, development resources, and community links.","sidebar":"homeSidebar"},"overview/tokenomics/economic-model":{"id":"overview/tokenomics/economic-model","title":"Economic Model","description":"Overview of Status Network\'s economic model including revenue streams, sustainable funding approach, and how the network achieves economic sustainability without relying on gas fees.","sidebar":"homeSidebar"},"overview/tokenomics/karmic-tokenomics":{"id":"overview/tokenomics/karmic-tokenomics","title":"Karmic Tokenomics","description":"Explore Status Network\'s Karma system, a non-transferable governance token that rewards network participation and determines influence over funding decisions, incentives, and network parameters.","sidebar":"homeSidebar"},"overview/tokenomics/pre-deposits":{"id":"overview/tokenomics/pre-deposits","title":"Pre-Deposits","description":"Technical overview of Status Network\'s pre-deposit vault architecture, including Aragon-based vaults for SNT, LINEA, and ETH, and Generic Protocol integration for stablecoin deposits.","sidebar":"homeSidebar"},"overview/tokenomics/public-funding":{"id":"overview/tokenomics/public-funding","title":"Public Funding","description":"Overview of Status Network\'s public funding mechanism, including the apps funding pool, how funding is allocated, and why sustainable funding is crucial for blockchain applications.","sidebar":"homeSidebar"},"overview/tokenomics/snt-staking":{"id":"overview/tokenomics/snt-staking","title":"SNT Staking","description":"Learn about staking Status Network Token (SNT), including staking options, multiplier points, benefits, and how staking contributes to network governance and access to gasless transactions.","sidebar":"homeSidebar"},"tools/core-infrastructure/block-explorers":{"id":"tools/core-infrastructure/block-explorers","title":"Block Explorers","description":"Status Network block explorer for viewing transactions, verifying contracts, and monitoring network activity.","sidebar":"toolsSidebar"},"tools/core-infrastructure/bridge":{"id":"tools/core-infrastructure/bridge","title":"Status Network Testnet Bridge","description":"Complete guide to using the Status Network bridge for transferring tokens between Sepolia and Status Network testnet. Learn about supported tokens, bridging process, and monitoring transactions.","sidebar":"toolsSidebar"},"tools/core-infrastructure/rpc-endpoints":{"id":"tools/core-infrastructure/rpc-endpoints","title":"RPC Endpoints","description":"Official RPC endpoints for Status Network, including configuration guides for MetaMask and Web3 libraries. Learn about available methods, rate limits, and best practices.","sidebar":"toolsSidebar"},"tools/core-infrastructure/testnet-faucets":{"id":"tools/core-infrastructure/testnet-faucets","title":"Testnet Faucets","description":"Get testnet ETH or STT for Status Network development. Complete guide to obtaining test tokens through Status Network faucets and Sepolia faucets for bridging.","sidebar":"toolsSidebar"},"tools/ethereum-compatibility/ethereum-differences":{"id":"tools/ethereum-compatibility/ethereum-differences","title":"Differences between Ethereum and Status Network","description":"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.","sidebar":"toolsSidebar"},"tools/infrastructure":{"id":"tools/infrastructure","title":"Infrastructure Partners","description":"Infrastructure partners and third-party integrations available on Status Network \u2014 RPC providers, oracles, indexers, account abstraction, dev tooling, and more.","sidebar":"toolsSidebar"},"tools/rpc/json-rpc":{"id":"tools/rpc/json-rpc","title":"JSON-RPC API","description":"Status Network JSON-RPC API reference for builders.","sidebar":"toolsSidebar"},"tools/rpc/running-an-rpc":{"id":"tools/rpc/running-an-rpc","title":"Running Your Own RPC Node","description":"Complete guide to setting up and running your own RPC node for Status Network using the official RPC tools. Learn about node setup, configuration, and maintenance.","sidebar":"toolsSidebar"},"tools/tools-index":{"id":"tools/tools-index","title":"Tools & Infrastructure","description":"Developer tools, infrastructure services, and integrations available on Status Network \u2014 RPC endpoints, bridges, faucets, explorers, and partner integrations.","sidebar":"toolsSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/2d4f555c.1f03edd3.js b/assets/js/2d4f555c.1f03edd3.js new file mode 100644 index 0000000..63ca0a8 --- /dev/null +++ b/assets/js/2d4f555c.1f03edd3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[4217],{2166:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-foundry","title":"Using Foundry: Testing & Deploying on Status Network","description":"Comprehensive guide to using Foundry on Status Network. Deploy, test, and interact with smart contracts on our gasless L2 using Forge and Cast tools.","source":"@site/docs/build-for-karma/deploying-contracts/using-foundry.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-foundry","permalink":"/build-for-karma/deploying-contracts/using-foundry","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-foundry.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Using Foundry: Testing & Deploying on Status Network","description":"Comprehensive guide to using Foundry on Status Network. Deploy, test, and interact with smart contracts on our gasless L2 using Forge and Cast tools.","keywords":["Foundry tutorial","smart contract deployment","Status Network development","blockchain testing","Solidity development","web3 development","Foundry testing"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83c\udfa9 Using Hardhat","permalink":"/build-for-karma/deploying-contracts/using-hardhat"},"next":{"title":"\ud83c\udf9b\ufe0f Using Remix","permalink":"/build-for-karma/deploying-contracts/using-remix"}}');var s=n(4848),o=n(8453);const i={title:"Using Foundry: Testing & Deploying on Status Network",description:"Comprehensive guide to using Foundry on Status Network. Deploy, test, and interact with smart contracts on our gasless L2 using Forge and Cast tools.",keywords:["Foundry tutorial","smart contract deployment","Status Network development","blockchain testing","Solidity development","web3 development","Foundry testing"]},l="Using Foundry to Deploy Smart Contracts",a={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"What You'll Accomplish",id:"what-youll-accomplish",level:2},{value:"Steps",id:"steps",level:2},{value:"1. Initialize a Foundry Project",id:"1-initialize-a-foundry-project",level:3},{value:"2. Writing the Smart Contract",id:"2-writing-the-smart-contract",level:3},{value:"3. Configure Foundry for Status Network",id:"3-configure-foundry-for-status-network",level:3},{value:"4. Deploy the Contract",id:"4-deploy-the-contract",level:3},{value:"5. Interact with the Contract",id:"5-interact-with-the-contract",level:3},{value:"6. Cast Commands for Quick Interactions",id:"6-cast-commands-for-quick-interactions",level:3},{value:"7. Testing",id:"7-testing",level:3},{value:"Support",id:"support",level:2},{value:"Additional Resources",id:"additional-resources",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"using-foundry-to-deploy-smart-contracts",children:"Using Foundry to Deploy Smart Contracts"})}),"\n",(0,s.jsx)(t.p,{children:"This tutorial will guide you through the process of deploying a smart contract on Status Network testnet using Foundry."}),"\n",(0,s.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(t.p,{children:"Before you begin, ensure you have the following:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Foundry"}),": Install from the ",(0,s.jsx)(t.a,{href:"https://book.getfoundry.sh/getting-started/installation",children:"official Foundry book"})]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Ethereum Wallet"}),": A private key for Status Network testnet"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Testnet ETH"}),": You'll need Status Network testnet ETH","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Get Status Network testnet ETH from our ",(0,s.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Basic Knowledge"}),": Familiarity with Solidity and command line"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"what-youll-accomplish",children:"What You'll Accomplish"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Initialize a Foundry project"}),"\n",(0,s.jsx)(t.li,{children:"Write a basic Ethereum smart contract"}),"\n",(0,s.jsx)(t.li,{children:"Configure Foundry for Status Network testnet deployment"}),"\n",(0,s.jsx)(t.li,{children:"Deploy your smart contract"}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,s.jsx)(t.h3,{id:"1-initialize-a-foundry-project",children:"1. Initialize a Foundry Project"}),"\n",(0,s.jsx)(t.p,{children:"First, create a new Foundry project:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'# Create a new project\nforge init hello_status\ncd hello_status\n\n# Create .env file for private key\ntouch .env\necho "PRIVATE_KEY=your_private_key_here" >> .env\n'})}),"\n",(0,s.jsx)(t.h3,{id:"2-writing-the-smart-contract",children:"2. Writing the Smart Contract"}),"\n",(0,s.jsxs)(t.p,{children:["Replace ",(0,s.jsx)(t.code,{children:"src/Counter.sol"})," with our ",(0,s.jsx)(t.code,{children:"HelloWorld.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\ncontract HelloWorld {\n string public greet = "Hello, Status Network!";\n\n function setGreet(string memory _greet) public {\n greet = _greet;\n }\n\n function getGreet() public view returns (string memory) {\n return greet;\n }\n}\n'})}),"\n",(0,s.jsx)(t.h3,{id:"3-configure-foundry-for-status-network",children:"3. Configure Foundry for Status Network"}),"\n",(0,s.jsxs)(t.p,{children:["Create or update ",(0,s.jsx)(t.code,{children:"foundry.toml"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-toml",children:'[profile.default]\nsrc = "src"\nout = "out"\nlibs = ["lib"]\nsolc = "0.8.24"\nevm_version = "paris"\n\n[rpc_endpoints]\nstatus_testnet = "https://public.sepolia.rpc.status.network"\n'})}),"\n",(0,s.jsx)(t.h3,{id:"4-deploy-the-contract",children:"4. Deploy the Contract"}),"\n",(0,s.jsxs)(t.p,{children:["Create a deployment script ",(0,s.jsx)(t.code,{children:"script/Deploy.s.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport "forge-std/Script.sol";\nimport "../src/HelloWorld.sol";\n\ncontract DeployScript is Script {\n function run() external {\n uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");\n \n vm.startBroadcast(deployerPrivateKey);\n \n HelloWorld hello = new HelloWorld();\n console.log("HelloWorld deployed to:", address(hello));\n \n vm.stopBroadcast();\n }\n}\n'})}),"\n",(0,s.jsx)(t.p,{children:"Deploy using forge:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:"# Load environment variables\nsource .env\n\n# Deploy to Status Network testnet\nforge script script/Deploy.s.sol:DeployScript \\\n --rpc-url https://public.sepolia.rpc.status.network \\\n --broadcast \\\n"})}),"\n",(0,s.jsx)(t.h3,{id:"5-interact-with-the-contract",children:"5. Interact with the Contract"}),"\n",(0,s.jsxs)(t.p,{children:["Create a script to interact with your contract ",(0,s.jsx)(t.code,{children:"script/Interact.s.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport "forge-std/Script.sol";\nimport "../src/HelloWorld.sol";\n\ncontract InteractScript is Script {\n function run() external {\n uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");\n address contractAddress = address(0x...); // Replace with your contract address\n \n vm.startBroadcast(deployerPrivateKey);\n \n HelloWorld hello = HelloWorld(contractAddress);\n \n // Read current greeting\n string memory currentGreeting = hello.getGreet();\n console.log("Current greeting:", currentGreeting);\n \n // Update greeting\n hello.setGreet("Hello from Foundry!");\n \n vm.stopBroadcast();\n }\n}\n'})}),"\n",(0,s.jsx)(t.p,{children:"Run the interaction script:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:"forge script script/Interact.s.sol:InteractScript \\\n --rpc-url https://public.sepolia.rpc.status.network \\\n --broadcast\n"})}),"\n",(0,s.jsx)(t.h3,{id:"6-cast-commands-for-quick-interactions",children:"6. Cast Commands for Quick Interactions"}),"\n",(0,s.jsxs)(t.p,{children:["You can also use ",(0,s.jsx)(t.code,{children:"cast"})," to interact with your contract:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'# Read the greeting\ncast call "getGreet()" \\\n --rpc-url https://public.sepolia.rpc.status.network\n\n# Set a new greeting\ncast send "setGreet(string)" "New greeting!" \\\n --private-key $PRIVATE_KEY \\\n --rpc-url https://public.sepolia.rpc.status.network\n'})}),"\n",(0,s.jsx)(t.h3,{id:"7-testing",children:"7. Testing"}),"\n",(0,s.jsxs)(t.p,{children:["Create a test file ",(0,s.jsx)(t.code,{children:"test/HelloWorld.t.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport "forge-std/Test.sol";\nimport "../src/HelloWorld.sol";\n\ncontract HelloWorldTest is Test {\n HelloWorld hello;\n\n function setUp() public {\n hello = new HelloWorld();\n }\n\n function testGreeting() public {\n assertEq(hello.getGreet(), "Hello, Status Network!");\n \n hello.setGreet("New greeting");\n assertEq(hello.getGreet(), "New greeting");\n }\n}\n'})}),"\n",(0,s.jsx)(t.p,{children:"Run the tests:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:"forge test\n"})}),"\n",(0,s.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,s.jsx)(t.p,{children:"If you encounter any issues:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Join our ",(0,s.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})]}),"\n",(0,s.jsxs)(t.li,{children:["View our ",(0,s.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"additional-resources",children:"Additional Resources"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://book.getfoundry.sh/",children:"Foundry Book"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>l});var r=n(6540);const s={},o=r.createContext(s);function i(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2d4f555c.d4b6f9c2.js b/assets/js/2d4f555c.d4b6f9c2.js deleted file mode 100644 index 4ad337e..0000000 --- a/assets/js/2d4f555c.d4b6f9c2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[4217],{2166:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-foundry","title":"Using Foundry with Status Network","description":"Comprehensive guide to deploying and testing smart contracts on Status Network using Foundry. Learn about project setup, deployment scripts, testing, and contract interaction using Cast.","source":"@site/docs/build-for-karma/deploying-contracts/using-foundry.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-foundry","permalink":"/build-for-karma/deploying-contracts/using-foundry","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-foundry.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"Using Foundry with Status Network","description":"Comprehensive guide to deploying and testing smart contracts on Status Network using Foundry. Learn about project setup, deployment scripts, testing, and contract interaction using Cast.","keywords":["Foundry tutorial","smart contract deployment","Status Network development","blockchain testing","Solidity development","web3 development","Foundry testing"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83c\udfa9 Using Hardhat","permalink":"/build-for-karma/deploying-contracts/using-hardhat"},"next":{"title":"\ud83c\udf9b\ufe0f Using Remix","permalink":"/build-for-karma/deploying-contracts/using-remix"}}');var s=n(4848),o=n(8453);const i={title:"Using Foundry with Status Network",description:"Comprehensive guide to deploying and testing smart contracts on Status Network using Foundry. Learn about project setup, deployment scripts, testing, and contract interaction using Cast.",keywords:["Foundry tutorial","smart contract deployment","Status Network development","blockchain testing","Solidity development","web3 development","Foundry testing"]},l="Using Foundry to Deploy Smart Contracts",a={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"What You'll Accomplish",id:"what-youll-accomplish",level:2},{value:"Steps",id:"steps",level:2},{value:"1. Initialize a Foundry Project",id:"1-initialize-a-foundry-project",level:3},{value:"2. Writing the Smart Contract",id:"2-writing-the-smart-contract",level:3},{value:"3. Configure Foundry for Status Network",id:"3-configure-foundry-for-status-network",level:3},{value:"4. Deploy the Contract",id:"4-deploy-the-contract",level:3},{value:"5. Interact with the Contract",id:"5-interact-with-the-contract",level:3},{value:"6. Cast Commands for Quick Interactions",id:"6-cast-commands-for-quick-interactions",level:3},{value:"7. Testing",id:"7-testing",level:3},{value:"Support",id:"support",level:2},{value:"Additional Resources",id:"additional-resources",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"using-foundry-to-deploy-smart-contracts",children:"Using Foundry to Deploy Smart Contracts"})}),"\n",(0,s.jsx)(t.p,{children:"This tutorial will guide you through the process of deploying a smart contract on Status Network testnet using Foundry."}),"\n",(0,s.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(t.p,{children:"Before you begin, ensure you have the following:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Foundry"}),": Install from the ",(0,s.jsx)(t.a,{href:"https://book.getfoundry.sh/getting-started/installation",children:"official Foundry book"})]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Ethereum Wallet"}),": A private key for Status Network testnet"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Testnet ETH"}),": You'll need Status Network testnet ETH","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Get Status Network testnet ETH from our ",(0,s.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Basic Knowledge"}),": Familiarity with Solidity and command line"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"what-youll-accomplish",children:"What You'll Accomplish"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Initialize a Foundry project"}),"\n",(0,s.jsx)(t.li,{children:"Write a basic Ethereum smart contract"}),"\n",(0,s.jsx)(t.li,{children:"Configure Foundry for Status Network testnet deployment"}),"\n",(0,s.jsx)(t.li,{children:"Deploy your smart contract"}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,s.jsx)(t.h3,{id:"1-initialize-a-foundry-project",children:"1. Initialize a Foundry Project"}),"\n",(0,s.jsx)(t.p,{children:"First, create a new Foundry project:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'# Create a new project\nforge init hello_status\ncd hello_status\n\n# Create .env file for private key\ntouch .env\necho "PRIVATE_KEY=your_private_key_here" >> .env\n'})}),"\n",(0,s.jsx)(t.h3,{id:"2-writing-the-smart-contract",children:"2. Writing the Smart Contract"}),"\n",(0,s.jsxs)(t.p,{children:["Replace ",(0,s.jsx)(t.code,{children:"src/Counter.sol"})," with our ",(0,s.jsx)(t.code,{children:"HelloWorld.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\ncontract HelloWorld {\n string public greet = "Hello, Status Network!";\n\n function setGreet(string memory _greet) public {\n greet = _greet;\n }\n\n function getGreet() public view returns (string memory) {\n return greet;\n }\n}\n'})}),"\n",(0,s.jsx)(t.h3,{id:"3-configure-foundry-for-status-network",children:"3. Configure Foundry for Status Network"}),"\n",(0,s.jsxs)(t.p,{children:["Create or update ",(0,s.jsx)(t.code,{children:"foundry.toml"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-toml",children:'[profile.default]\nsrc = "src"\nout = "out"\nlibs = ["lib"]\nsolc = "0.8.24"\nevm_version = "paris"\n\n[rpc_endpoints]\nstatus_testnet = "https://public.sepolia.rpc.status.network"\n'})}),"\n",(0,s.jsx)(t.h3,{id:"4-deploy-the-contract",children:"4. Deploy the Contract"}),"\n",(0,s.jsxs)(t.p,{children:["Create a deployment script ",(0,s.jsx)(t.code,{children:"script/Deploy.s.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport "forge-std/Script.sol";\nimport "../src/HelloWorld.sol";\n\ncontract DeployScript is Script {\n function run() external {\n uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");\n \n vm.startBroadcast(deployerPrivateKey);\n \n HelloWorld hello = new HelloWorld();\n console.log("HelloWorld deployed to:", address(hello));\n \n vm.stopBroadcast();\n }\n}\n'})}),"\n",(0,s.jsx)(t.p,{children:"Deploy using forge:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:"# Load environment variables\nsource .env\n\n# Deploy to Status Network testnet\nforge script script/Deploy.s.sol:DeployScript \\\n --rpc-url https://public.sepolia.rpc.status.network \\\n --broadcast \\\n"})}),"\n",(0,s.jsx)(t.h3,{id:"5-interact-with-the-contract",children:"5. Interact with the Contract"}),"\n",(0,s.jsxs)(t.p,{children:["Create a script to interact with your contract ",(0,s.jsx)(t.code,{children:"script/Interact.s.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport "forge-std/Script.sol";\nimport "../src/HelloWorld.sol";\n\ncontract InteractScript is Script {\n function run() external {\n uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");\n address contractAddress = address(0x...); // Replace with your contract address\n \n vm.startBroadcast(deployerPrivateKey);\n \n HelloWorld hello = HelloWorld(contractAddress);\n \n // Read current greeting\n string memory currentGreeting = hello.getGreet();\n console.log("Current greeting:", currentGreeting);\n \n // Update greeting\n hello.setGreet("Hello from Foundry!");\n \n vm.stopBroadcast();\n }\n}\n'})}),"\n",(0,s.jsx)(t.p,{children:"Run the interaction script:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:"forge script script/Interact.s.sol:InteractScript \\\n --rpc-url https://public.sepolia.rpc.status.network \\\n --broadcast\n"})}),"\n",(0,s.jsx)(t.h3,{id:"6-cast-commands-for-quick-interactions",children:"6. Cast Commands for Quick Interactions"}),"\n",(0,s.jsxs)(t.p,{children:["You can also use ",(0,s.jsx)(t.code,{children:"cast"})," to interact with your contract:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'# Read the greeting\ncast call "getGreet()" \\\n --rpc-url https://public.sepolia.rpc.status.network\n\n# Set a new greeting\ncast send "setGreet(string)" "New greeting!" \\\n --private-key $PRIVATE_KEY \\\n --rpc-url https://public.sepolia.rpc.status.network\n'})}),"\n",(0,s.jsx)(t.h3,{id:"7-testing",children:"7. Testing"}),"\n",(0,s.jsxs)(t.p,{children:["Create a test file ",(0,s.jsx)(t.code,{children:"test/HelloWorld.t.sol"}),":"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport "forge-std/Test.sol";\nimport "../src/HelloWorld.sol";\n\ncontract HelloWorldTest is Test {\n HelloWorld hello;\n\n function setUp() public {\n hello = new HelloWorld();\n }\n\n function testGreeting() public {\n assertEq(hello.getGreet(), "Hello, Status Network!");\n \n hello.setGreet("New greeting");\n assertEq(hello.getGreet(), "New greeting");\n }\n}\n'})}),"\n",(0,s.jsx)(t.p,{children:"Run the tests:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:"forge test\n"})}),"\n",(0,s.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,s.jsx)(t.p,{children:"If you encounter any issues:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Join our ",(0,s.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})]}),"\n",(0,s.jsxs)(t.li,{children:["View our ",(0,s.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"additional-resources",children:"Additional Resources"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://book.getfoundry.sh/",children:"Foundry Book"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>l});var r=n(6540);const s={},o=r.createContext(s);function i(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2dfac737.bac68338.js b/assets/js/2dfac737.bac68338.js deleted file mode 100644 index 2a5e5dc..0000000 --- a/assets/js/2dfac737.bac68338.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7474],{1617:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"tools/core-infrastructure/testnet-faucets","title":"Testnet Faucets","description":"Get testnet ETH or STT for Status Network development. Complete guide to obtaining test tokens through Status Network faucets and Sepolia faucets for bridging.","source":"@site/docs/tools/core-infrastructure/testnet-faucets.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/testnet-faucets","permalink":"/tools/core-infrastructure/testnet-faucets","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/testnet-faucets.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"Testnet Faucets","description":"Get testnet ETH or STT for Status Network development. Complete guide to obtaining test tokens through Status Network faucets and Sepolia faucets for bridging.","keywords":["Status Network faucet","testnet ETH","test tokens","STT","Sepolia faucet","blockchain testing","development tokens"],"slug":"/tools/core-infrastructure/testnet-faucets"},"sidebar":"toolsSidebar","previous":{"title":"\ud83c\udf09 Bridge","permalink":"/tools/core-infrastructure/bridge"},"next":{"title":"\ud83d\udd0e Block Explorers","permalink":"/tools/core-infrastructure/block-explorers"}}');var r=s(4848),o=s(8453);const i={title:"Testnet Faucets",description:"Get testnet ETH or STT for Status Network development. Complete guide to obtaining test tokens through Status Network faucets and Sepolia faucets for bridging.",keywords:["Status Network faucet","testnet ETH","test tokens","STT","Sepolia faucet","blockchain testing","development tokens"],slug:"/tools/core-infrastructure/testnet-faucets"},a=void 0,l={},c=[{value:"Status Network Testnet ETH Faucet",id:"status-network-testnet-eth-faucet",level:2},{value:"Details",id:"details",level:3},{value:"How to Get Testnet ETH",id:"how-to-get-testnet-eth",level:3},{value:"Sepolia ETH (Required for Bridging)",id:"sepolia-eth-required-for-bridging",level:2},{value:"Status Network STT Faucet",id:"status-network-stt-faucet",level:2},{value:"Details",id:"details-1",level:3},{value:"How to Get STT",id:"how-to-get-stt",level:3},{value:"Support",id:"support",level:2}];function u(t){const e={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.p,{children:"To get started on Status Network testnet, you may need some testnet ETH or test assets."}),"\n",(0,r.jsx)(e.h2,{id:"status-network-testnet-eth-faucet",children:"Status Network Testnet ETH Faucet"}),"\n",(0,r.jsxs)(e.p,{children:["The Status Network testnet faucet is available at ",(0,r.jsx)(e.a,{href:"https://faucet.status.network",children:"faucet.status.network"}),"."]}),"\n",(0,r.jsx)(e.h3,{id:"details",children:"Details"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Faucet Contract"}),": ",(0,r.jsx)(e.a,{href:"https://sepoliascan.status.network/address/0x06338B70F1eAbc60d7A82C083e605C07F78bb878",children:(0,r.jsx)(e.code,{children:"0x06338B70F1eAbc60d7A82C083e605C07F78bb878"})})]}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Amount"}),": 0.01 ETH per request"]}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Cooldown"}),": One request per address per day"]}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Condition"}),": Destination address must have at least 0.01 ETH on mainnet"]}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"how-to-get-testnet-eth",children:"How to Get Testnet ETH"}),"\n",(0,r.jsxs)(e.ol,{children:["\n",(0,r.jsxs)(e.li,{children:["Visit ",(0,r.jsx)(e.a,{href:"https://faucet.status.network",children:"faucet.status.network"})]}),"\n",(0,r.jsx)(e.li,{children:"Paste in your wallet address"}),"\n",(0,r.jsx)(e.li,{children:'Click "Request"'}),"\n",(0,r.jsx)(e.li,{children:"Wait for the ETH to appear in your wallet (usually takes a few seconds)"}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"sepolia-eth-required-for-bridging",children:"Sepolia ETH (Required for Bridging)"}),"\n",(0,r.jsx)(e.p,{children:"To bridge assets to Status Network testnet, you'll first need Sepolia ETH. You can get it from:"}),"\n",(0,r.jsxs)(e.ol,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"https://www.alchemy.com/faucets/ethereum-sepolia",children:"Alchemy Sepolia Faucet"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"https://docs.metamask.io/developer-tools/faucet/",children:"Metamask Sepolia Faucet"})}),"\n"]}),"\n",(0,r.jsxs)(e.p,{children:["Once you have Sepolia ETH, you can bridge it to Status Network testnet using the ",(0,r.jsx)(e.a,{href:"https://bridge.status.network",children:"Status Network Bridge"}),"."]}),"\n",(0,r.jsx)(e.h2,{id:"status-network-stt-faucet",children:"Status Network STT Faucet"}),"\n",(0,r.jsx)(e.p,{children:"Status Test Token (STT) is the testnet equivalent of SNT. It is used as a test asset within the Status Network Testnet ecosystem."}),"\n",(0,r.jsx)(e.h3,{id:"details-1",children:"Details"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Faucet Contract"}),": ",(0,r.jsx)(e.a,{href:"https://sepoliascan.status.network/address/0x4Fb609F4a457f47B41D35Dd060447271F000120A",children:(0,r.jsx)(e.code,{children:"0x4Fb609F4a457f47B41D35Dd060447271F000120A"})})]}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Amount"}),": 10,000 STT per request"]}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Cooldown"}),": One request per address per day"]}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"how-to-get-stt",children:"How to Get STT"}),"\n",(0,r.jsxs)(e.ol,{children:["\n",(0,r.jsxs)(e.li,{children:["Visit ",(0,r.jsx)(e.a,{href:"https://hub.status.network/stake",children:"hub.status.network Stake page"})]}),"\n",(0,r.jsx)(e.li,{children:"Connect your wallet and Sign-in"}),"\n",(0,r.jsx)(e.li,{children:'Click "Claim testnet SNT (STT)"'}),"\n",(0,r.jsx)(e.li,{children:"Confirm the transaction in your wallet"}),"\n",(0,r.jsx)(e.li,{children:"Wait for the STT to appear in your wallet (usually takes a few seconds)"}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"support",children:"Support"}),"\n",(0,r.jsx)(e.p,{children:"If you encounter any issues with the faucet:"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["Join our ",(0,r.jsx)(e.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for support"]}),"\n"]})]})}function d(t={}){const{wrapper:e}={...(0,o.R)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}},8453:(t,e,s)=>{s.d(e,{R:()=>i,x:()=>a});var n=s(6540);const r={},o=n.createContext(r);function i(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:i(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/2dfac737.e5eda046.js b/assets/js/2dfac737.e5eda046.js new file mode 100644 index 0000000..817b67a --- /dev/null +++ b/assets/js/2dfac737.e5eda046.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7474],{1617:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"tools/core-infrastructure/testnet-faucets","title":"Testnet Faucets: Get ETH & STT for Status Network","description":"Obtain test tokens for Status Network development. Use our faucets to get ETH and STT to test gasless execution and Karma-based reputation mechanics.","source":"@site/docs/tools/core-infrastructure/testnet-faucets.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/testnet-faucets","permalink":"/tools/core-infrastructure/testnet-faucets","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/testnet-faucets.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Testnet Faucets: Get ETH & STT for Status Network","description":"Obtain test tokens for Status Network development. Use our faucets to get ETH and STT to test gasless execution and Karma-based reputation mechanics.","keywords":["Status Network faucet","testnet ETH","test tokens","STT","Sepolia faucet","blockchain testing","development tokens"],"slug":"/tools/core-infrastructure/testnet-faucets"},"sidebar":"toolsSidebar","previous":{"title":"\ud83c\udf09 Bridge","permalink":"/tools/core-infrastructure/bridge"},"next":{"title":"\ud83d\udd0e Block Explorers","permalink":"/tools/core-infrastructure/block-explorers"}}');var r=s(4848),o=s(8453);const a={title:"Testnet Faucets: Get ETH & STT for Status Network",description:"Obtain test tokens for Status Network development. Use our faucets to get ETH and STT to test gasless execution and Karma-based reputation mechanics.",keywords:["Status Network faucet","testnet ETH","test tokens","STT","Sepolia faucet","blockchain testing","development tokens"],slug:"/tools/core-infrastructure/testnet-faucets"},i="Testnet Faucets",l={},c=[{value:"Status Network Testnet ETH Faucet",id:"status-network-testnet-eth-faucet",level:2},{value:"Details",id:"details",level:3},{value:"How to Get Testnet ETH",id:"how-to-get-testnet-eth",level:3},{value:"Sepolia ETH (Required for Bridging)",id:"sepolia-eth-required-for-bridging",level:2},{value:"Status Network STT Faucet",id:"status-network-stt-faucet",level:2},{value:"Details",id:"details-1",level:3},{value:"How to Get STT",id:"how-to-get-stt",level:3},{value:"Support",id:"support",level:2}];function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"testnet-faucets",children:"Testnet Faucets"})}),"\n",(0,r.jsx)(t.p,{children:"To get started on Status Network testnet, you may need some testnet ETH or test assets."}),"\n",(0,r.jsx)(t.h2,{id:"status-network-testnet-eth-faucet",children:"Status Network Testnet ETH Faucet"}),"\n",(0,r.jsxs)(t.p,{children:["The Status Network testnet faucet is available at ",(0,r.jsx)(t.a,{href:"https://faucet.status.network",children:"faucet.status.network"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"details",children:"Details"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Faucet Contract"}),": ",(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network/address/0x06338B70F1eAbc60d7A82C083e605C07F78bb878",children:(0,r.jsx)(t.code,{children:"0x06338B70F1eAbc60d7A82C083e605C07F78bb878"})})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Amount"}),": 0.01 ETH per request"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Cooldown"}),": One request per address per day"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Condition"}),": Destination address must have at least 0.01 ETH on mainnet"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"how-to-get-testnet-eth",children:"How to Get Testnet ETH"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Visit ",(0,r.jsx)(t.a,{href:"https://faucet.status.network",children:"faucet.status.network"})]}),"\n",(0,r.jsx)(t.li,{children:"Paste in your wallet address"}),"\n",(0,r.jsx)(t.li,{children:'Click "Request"'}),"\n",(0,r.jsx)(t.li,{children:"Wait for the ETH to appear in your wallet (usually takes a few seconds)"}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"sepolia-eth-required-for-bridging",children:"Sepolia ETH (Required for Bridging)"}),"\n",(0,r.jsx)(t.p,{children:"To bridge assets to Status Network testnet, you'll first need Sepolia ETH. You can get it from:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://www.alchemy.com/faucets/ethereum-sepolia",children:"Alchemy Sepolia Faucet"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://docs.metamask.io/developer-tools/faucet/",children:"Metamask Sepolia Faucet"})}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Once you have Sepolia ETH, you can bridge it to Status Network testnet using the ",(0,r.jsx)(t.a,{href:"https://bridge.status.network",children:"Status Network Bridge"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"status-network-stt-faucet",children:"Status Network STT Faucet"}),"\n",(0,r.jsx)(t.p,{children:"Status Test Token (STT) is the testnet equivalent of SNT. It is used as a test asset within the Status Network Testnet ecosystem."}),"\n",(0,r.jsx)(t.h3,{id:"details-1",children:"Details"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Faucet Contract"}),": ",(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network/address/0x4Fb609F4a457f47B41D35Dd060447271F000120A",children:(0,r.jsx)(t.code,{children:"0x4Fb609F4a457f47B41D35Dd060447271F000120A"})})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Amount"}),": 10,000 STT per request"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Cooldown"}),": One request per address per day"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"how-to-get-stt",children:"How to Get STT"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Visit ",(0,r.jsx)(t.a,{href:"https://hub.status.network/stake",children:"hub.status.network Stake page"})]}),"\n",(0,r.jsx)(t.li,{children:"Connect your wallet and Sign-in"}),"\n",(0,r.jsx)(t.li,{children:'Click "Claim testnet SNT (STT)"'}),"\n",(0,r.jsx)(t.li,{children:"Confirm the transaction in your wallet"}),"\n",(0,r.jsx)(t.li,{children:"Wait for the STT to appear in your wallet (usually takes a few seconds)"}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,r.jsx)(t.p,{children:"If you encounter any issues with the faucet:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for support"]}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>i});var n=s(6540);const r={},o=n.createContext(r);function a(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4b7a78ae.63e12605.js b/assets/js/4b7a78ae.63e12605.js new file mode 100644 index 0000000..18f204b --- /dev/null +++ b/assets/js/4b7a78ae.63e12605.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[3550],{7813:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>s,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"build-for-karma/guides/index","title":"Using Karma: Integration Guides for Reputation Logic","description":"Developer entry point for Karma. Learn to integrate reputation-aware features, gate content by tier, and utilize gasless execution on Status Network L2.","source":"@site/docs/build-for-karma/guides/index.md","sourceDirName":"build-for-karma/guides","slug":"/build-for-karma/guides","permalink":"/build-for-karma/guides","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/guides/index.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":3,"frontMatter":{"title":"Using Karma: Integration Guides for Reputation Logic","description":"Developer entry point for Karma. Learn to integrate reputation-aware features, gate content by tier, and utilize gasless execution on Status Network L2.","keywords":["Karma","gasless","reputation","integration","Status Network"],"slug":"/build-for-karma/guides","sidebar_position":3},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83d\udca1 What to Build","permalink":"/build-for-karma/what-to-build"},"next":{"title":"\u26fd Gasless Integration","permalink":"/build-for-karma/guides/gasless-integration"}}');var n=r(4848),i=r(8453);const s={title:"Using Karma: Integration Guides for Reputation Logic",description:"Developer entry point for Karma. Learn to integrate reputation-aware features, gate content by tier, and utilize gasless execution on Status Network L2.",keywords:["Karma","gasless","reputation","integration","Status Network"],slug:"/build-for-karma/guides",sidebar_position:3},o="Using Karma",u={},d=[{value:"Start Here",id:"start-here",level:2}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"using-karma",children:"Using Karma"})}),"\n",(0,n.jsx)(t.p,{children:"Karma provides gasless transaction privileges and reputation across Status Network.\nThis section helps you integrate both gasless behavior and tier-aware product logic in your app."}),"\n",(0,n.jsx)(t.h2,{id:"start-here",children:"Start Here"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Handling transactions?"})}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Start with ",(0,n.jsx)(t.a,{href:"/build-for-karma/guides/gasless-integration",children:"Gasless Integration"})," to use ",(0,n.jsx)(t.code,{children:"linea_estimateGas"})," as your single source of truth for gasless vs premium-fee outcomes."]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Gating features by reputation?"})}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Continue with ",(0,n.jsx)(t.a,{href:"/build-for-karma/guides/reputation-integration",children:"Reputation Integration"})," to read Karma balances and tiers onchain, gate contracts, and design tier-aware frontends."]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>s,x:()=>o});var a=r(6540);const n={},i=a.createContext(n);function s(e){const t=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),a.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4b7a78ae.e799e0ed.js b/assets/js/4b7a78ae.e799e0ed.js deleted file mode 100644 index e80431a..0000000 --- a/assets/js/4b7a78ae.e799e0ed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[3550],{7813:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>a,toc:()=>u});const a=JSON.parse('{"id":"build-for-karma/guides/index","title":"Using Karma","description":"Entry point for integrating Karma-based gasless UX and reputation-aware features on Status Network.","source":"@site/docs/build-for-karma/guides/index.md","sourceDirName":"build-for-karma/guides","slug":"/build-for-karma/guides","permalink":"/build-for-karma/guides","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/guides/index.md","tags":[],"version":"current","lastUpdatedAt":1772141546000,"sidebarPosition":3,"frontMatter":{"title":"Using Karma","description":"Entry point for integrating Karma-based gasless UX and reputation-aware features on Status Network.","keywords":["Karma","gasless","reputation","integration","Status Network"],"slug":"/build-for-karma/guides","sidebar_position":3},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83d\udca1 What to Build","permalink":"/build-for-karma/what-to-build"},"next":{"title":"\u26fd Gasless Integration","permalink":"/build-for-karma/guides/gasless-integration"}}');var s=r(4848),n=r(8453);const i={title:"Using Karma",description:"Entry point for integrating Karma-based gasless UX and reputation-aware features on Status Network.",keywords:["Karma","gasless","reputation","integration","Status Network"],slug:"/build-for-karma/guides",sidebar_position:3},o=void 0,d={},u=[{value:"Start Here",id:"start-here",level:2}];function l(e){const t={a:"a",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"Karma provides gasless transaction privileges and reputation across Status Network.\nThis section helps you integrate both gasless behavior and tier-aware product logic in your app."}),"\n",(0,s.jsx)(t.h2,{id:"start-here",children:"Start Here"}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.strong,{children:"Handling transactions?"})}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Start with ",(0,s.jsx)(t.a,{href:"/build-for-karma/guides/gasless-integration",children:"Gasless Integration"})," to use ",(0,s.jsx)(t.code,{children:"linea_estimateGas"})," as your single source of truth for gasless vs premium-fee outcomes."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.strong,{children:"Gating features by reputation?"})}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Continue with ",(0,s.jsx)(t.a,{href:"/build-for-karma/guides/reputation-integration",children:"Reputation Integration"})," to read Karma balances and tiers onchain, gate contracts, and design tier-aware frontends."]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>i,x:()=>o});var a=r(6540);const s={},n=a.createContext(s);function i(e){const t=a.useContext(n);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),a.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4e16d657.31613c06.js b/assets/js/4e16d657.31613c06.js deleted file mode 100644 index 37c83bb..0000000 --- a/assets/js/4e16d657.31613c06.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[8377],{1470:(e,n,a)=>{a.d(n,{A:()=>j});var t=a(6540),r=a(4164),i=a(7559),s=a(3104),o=a(6347),l=a(205),c=a(7485),d=a(1682),u=a(679);function m(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:a}=e;return(0,t.useMemo)((()=>{const e=n??function(e){return m(e).map((({props:{value:e,label:n,attributes:a,default:t}})=>({value:e,label:n,attributes:a,default:t})))}(a);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,a])}function p({value:e,tabValues:n}){return n.some((n=>n.value===e))}function g({queryString:e=!1,groupId:n}){const a=(0,o.W6)(),r=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,c.aZ)(r),(0,t.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(a.location.search);n.set(r,e),a.replace({...a.location,search:n.toString()})}),[r,a])]}function b(e){const{defaultValue:n,queryString:a=!1,groupId:r}=e,i=h(e),[s,o]=(0,t.useState)((()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:i}))),[c,d]=g({queryString:a,groupId:r}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[a,r]=(0,u.Dv)(n);return[a,(0,t.useCallback)((e=>{n&&r.set(e)}),[n,r])]}({groupId:r}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&o(f)}),[f]);return{selectedValue:s,selectValue:(0,t.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var f=a(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=a(4848);function w({className:e,block:n,selectedValue:a,selectValue:t,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),c=e=>{const n=e.currentTarget,r=o.indexOf(n),s=i[r].value;s!==a&&(l(n),t(s))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const a=o.indexOf(e.currentTarget)+1;n=o[a]??o[0];break}case"ArrowLeft":{const a=o.indexOf(e.currentTarget)-1;n=o[a]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},e),children:i.map((({value:e,label:n,attributes:t})=>(0,x.jsx)("li",{role:"tab",tabIndex:a===e?0:-1,"aria-selected":a===e,ref:e=>{o.push(e)},onKeyDown:d,onClick:c,...t,className:(0,r.A)("tabs__item",v.tabItem,t?.className,{"tabs__item--active":a===e}),children:n??e},e)))})}function A({lazy:e,children:n,selectedValue:a}){const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=i.find((e=>e.props.value===a));return e?(0,t.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function y(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,r.A)(i.G.tabs.container,"tabs-container",v.tabList),children:[(0,x.jsx)(w,{...n,...e}),(0,x.jsx)(A,{...n,...e})]})}function j(e){const n=(0,f.A)();return(0,x.jsx)(y,{...e,children:m(e.children)},String(n))}},5240:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"build-for-karma/guides/reputation-integration","title":"Reputation Integration Guide","description":"How to read Karma tiers, gate features by reputation, and build Karma-aware smart contracts and frontends on Status Network.","source":"@site/docs/build-for-karma/guides/reputation-integration.md","sourceDirName":"build-for-karma/guides","slug":"/build-for-karma/guides/reputation-integration","permalink":"/build-for-karma/guides/reputation-integration","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/guides/reputation-integration.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"sidebarPosition":4,"frontMatter":{"title":"Reputation Integration Guide","description":"How to read Karma tiers, gate features by reputation, and build Karma-aware smart contracts and frontends on Status Network.","keywords":["Karma","integration","smart contract","soulbound token","reputation","tiers","gasless","Status Network","developer guide"],"slug":"/build-for-karma/guides/reputation-integration","sidebar_position":4},"sidebar":"buildForKarmaSidebar","previous":{"title":"\u26fd Gasless Integration","permalink":"/build-for-karma/guides/gasless-integration"},"next":{"title":"Deploy Your First Contract","permalink":"/build-for-karma/deploying-contracts"}}');var r=a(4848),i=a(8453),s=a(1470),o=a(9365);const l={title:"Reputation Integration Guide",description:"How to read Karma tiers, gate features by reputation, and build Karma-aware smart contracts and frontends on Status Network.",keywords:["Karma","integration","smart contract","soulbound token","reputation","tiers","gasless","Status Network","developer guide"],slug:"/build-for-karma/guides/reputation-integration",sidebar_position:4},c=void 0,d={},u=[{value:"Reading Karma On-Chain",id:"reading-karma-on-chain",level:2},{value:"Possible Integration Patterns",id:"possible-integration-patterns",level:2},{value:"Feature Gating",id:"feature-gating",level:3},{value:"Dynamic Pricing",id:"dynamic-pricing",level:3},{value:"Reputation Display",id:"reputation-display",level:3},{value:"Weighted Governance",id:"weighted-governance",level:3},{value:"Next Steps",id:"next-steps",level:2}];function m(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"Karma is Status Network's soulbound reputation token. Every address earns Karma through genuine network participation such as staking SNT, bridging assets, providing liquidity, using apps, or paying premium gas fees. Karma cannot be bought, sold, or transferred."}),"\n",(0,r.jsx)(n.p,{children:"This guide covers how to read Karma data and build apps that respond to a user's reputation tier."}),"\n",(0,r.jsx)(n.h2,{id:"reading-karma-on-chain",children:"Reading Karma On-Chain"}),"\n",(0,r.jsx)(n.p,{children:"Karma state is split across two contracts:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Karma"})," \u2014 the soulbound ERC-20 token. ",(0,r.jsx)(n.code,{children:"balanceOf"})," returns the net balance after any slashing. Transfers and approvals always revert."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"KarmaTiers"})," \u2014 maps balances to tiers. Call ",(0,r.jsx)(n.code,{children:"getTierIdByKarmaBalance(balance)"})," then ",(0,r.jsx)(n.code,{children:"getTierById(tierId)"})," to resolve a user's tier and its ",(0,r.jsx)(n.code,{children:"txPerEpoch"})," quota."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-reading",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\n/// @notice Minimal interface for the Karma soulbound token.\ninterface IKarma {\n /// @notice Net Karma balance of `account` after slashing.\n function balanceOf(address account) external view returns (uint256);\n\n /// @notice Total amount slashed from `account` across all distributors.\n function slashedAmountOf(address account) external view returns (uint256);\n}\n\n/// @notice Minimal interface for the KarmaTiers registry.\ninterface IKarmaTiers {\n struct Tier {\n uint256 minKarma;\n uint256 maxKarma;\n string name;\n uint32 txPerEpoch; // gasless transactions allowed per epoch\n }\n\n /// @notice Returns the highest tier ID the given karma balance qualifies for.\n function getTierIdByKarmaBalance(uint256 karmaBalance) external view returns (uint8);\n\n /// @notice Returns the full Tier struct for a given tier ID.\n function getTierById(uint8 tierId) external view returns (Tier memory);\n\n /// @notice Returns the total number of configured tiers.\n function getTierCount() external view returns (uint256);\n}\n\ncontract KarmaGated {\n IKarma public karma;\n IKarmaTiers public karmaTiers;\n\n constructor(address _karmaContract, address _karmaTiersContract) {\n karma = IKarma(_karmaContract);\n karmaTiers = IKarmaTiers(_karmaTiersContract);\n }\n\n /// @notice Resolves the tier ID for `user` from their current Karma balance.\n function tierIdOf(address user) public view returns (uint8) {\n return karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));\n }\n\n modifier onlyTier(uint8 minTier) {\n require(tierIdOf(msg.sender) >= minTier, "Karma tier too low");\n _;\n }\n\n function premiumAction() external onlyTier(3) {\n // Only users at tier 3 or above can call this\n }\n\n function getDiscount(address user) external view returns (uint256) {\n uint8 tierId = tierIdOf(user);\n // Higher tiers get bigger discounts\n return uint256(tierId) * 5; // 0%, 5%, 10%, ...\n }\n}\n'})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.JsonRpcProvider(\n 'https://public.sepolia.rpc.status.network'\n);\n\nconst KARMA_ABI = [\n 'function balanceOf(address account) view returns (uint256)',\n 'function slashedAmountOf(address account) view returns (uint256)',\n];\n\nconst KARMA_TIERS_ABI = [\n 'function getTierIdByKarmaBalance(uint256 karmaBalance) view returns (uint8)',\n 'function getTierById(uint8 tierId) view returns (tuple(uint256 minKarma, uint256 maxKarma, string name, uint32 txPerEpoch))',\n 'function getTierCount() view returns (uint256)',\n];\n\nconst karma = new ethers.Contract(KARMA_ADDRESS, KARMA_ABI, provider);\nconst karmaTiers = new ethers.Contract(KARMA_TIERS_ADDRESS, KARMA_TIERS_ABI, provider);\n\n// Read a user's Karma balance and resolve their tier\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\nconst tier = await karmaTiers.getTierById(tierId);\n\nconsole.log(`Karma balance: ${ethers.formatEther(balance)} KARMA`);\nconsole.log(`Tier: ${tier.name} (ID ${tierId})`);\nconsole.log(`Tx quota per epoch: ${tier.txPerEpoch}`);\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"import { createPublicClient, http } from 'viem';\n\nconst client = createPublicClient({\n transport: http('https://public.sepolia.rpc.status.network'),\n});\n\nconst karmaAbi = [\n {\n name: 'balanceOf',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n },\n {\n name: 'slashedAmountOf',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n },\n] as const;\n\nconst karmaTiersAbi = [\n {\n name: 'getTierIdByKarmaBalance',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'karmaBalance', type: 'uint256' }],\n outputs: [{ name: '', type: 'uint8' }],\n },\n {\n name: 'getTierById',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'tierId', type: 'uint8' }],\n outputs: [{\n name: 'tier',\n type: 'tuple',\n components: [\n { name: 'minKarma', type: 'uint256' },\n { name: 'maxKarma', type: 'uint256' },\n { name: 'name', type: 'string' },\n { name: 'txPerEpoch', type: 'uint32' },\n ],\n }],\n },\n] as const;\n\n// Two sequential reads: balance \u2192 tier ID \u2192 tier details\nconst balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nconst tier = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierById',\n args: [tierId],\n});\n\nconsole.log(`Tier: ${tier.name} (ID ${tierId})`);\nconsole.log(`Tx quota per epoch: ${tier.txPerEpoch}`);\n"})})})]}),"\n",(0,r.jsx)(n.admonition,{title:"Contract Addresses",type:"note",children:(0,r.jsxs)(n.p,{children:["Karma and KarmaTiers contract addresses for testnet are published on the ",(0,r.jsx)(n.a,{href:"/overview/general-info/contract-addresses/testnet-contracts",children:"Contract Addresses"})," page."]})}),"\n",(0,r.jsx)(n.h2,{id:"possible-integration-patterns",children:"Possible Integration Patterns"}),"\n",(0,r.jsx)(n.h3,{id:"feature-gating",children:"Feature Gating"}),"\n",(0,r.jsxs)(n.p,{children:["Unlock features based on Karma tier.\nThe ",(0,r.jsx)(n.code,{children:"onlyTier"})," modifier you can check from the ",(0,r.jsx)(n.a,{href:"#reading-karma-on-chain",children:"Reading Karma On-Chain"})," section can restrict access at the contract level.\nAlternatively, you can use ",(0,r.jsx)(n.code,{children:"tierId"})," in your code to gate features:"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"Karma-Gated Content Feed"})," \u2014 a ready-to-scope app built entirely around this pattern."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-gating",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:"function accessPremiumContent() external onlyTier(3) {\n // Only users at tier 3 or above can call this\n}\n"})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"// Resolve tier from Karma balance, then gate UI features\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\n\nif (tierId >= 3) {\n showPremiumFeatures();\n} else {\n showUpgradePrompt(tierId);\n}\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"const balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nif (tierId >= 3) {\n showPremiumFeatures();\n} else {\n showUpgradePrompt(tierId);\n}\n"})})})]}),"\n",(0,r.jsx)(n.h3,{id:"dynamic-pricing",children:"Dynamic Pricing"}),"\n",(0,r.jsx)(n.p,{children:"Offer discounts or better rates to high-Karma users:"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"Karma-Tiered NFT Marketplace"})," \u2014 a marketplace where fees and access windows scale automatically with a buyer's Karma tier."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-pricing",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:"function calculateFee(address user, uint256 baseAmount) public view returns (uint256) {\n uint8 tierId = karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));\n // Each tier gives 5% discount\n uint256 discount = uint256(tierId) * 5;\n return baseAmount * (100 - discount) / 100;\n}\n"})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"// Compute the discounted fee on the client-side from the user's current tier\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\n\nconst discount = BigInt(tierId) * 5n; // 5% per tier\nconst fee = baseAmount * (100n - discount) / 100n;\n\nconsole.log(`Tier ${tierId}: ${discount}% discount \u2192 fee = ${fee}`);\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"const balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nconst discount = BigInt(tierId) * 5n; // 5% per tier\nconst fee = baseAmount * (100n - discount) / 100n;\n\nconsole.log(`Tier ${tierId}: ${discount}% discount \u2192 fee = ${fee}`);\n"})})})]}),"\n",(0,r.jsx)(n.h3,{id:"reputation-display",children:"Reputation Display"}),"\n",(0,r.jsxs)(n.p,{children:["Show Karma tier as a trust index in your UI by reading the tier name directly from the ",(0,r.jsx)(n.code,{children:"KarmaTiers"})," contract:"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"Gasless Micro-Blogging Platform"})," \u2014 a social feed with Karma trust badges embedded in profiles and posts."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-display",children:[(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'// Fetch tier name on-chain \u2014 no hardcoded array needed\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\nconst tier = await karmaTiers.getTierById(tierId);\n\nfunction KarmaBadge({ tierName }) {\n return {tierName};\n}\n\n// Usage\n\n'})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"const balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nconst tier = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierById',\n args: [tierId],\n});\n\nfunction KarmaBadge({ tierName }: { tierName: string }) {\n return {tierName};\n}\n\n// Usage\n\n"})})})]}),"\n",(0,r.jsx)(n.h3,{id:"weighted-governance",children:"Weighted Governance"}),"\n",(0,r.jsx)(n.p,{children:"Use Karma for vote weighting in your app's governance:"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"DAO Proposal & Karma-Weighted Voting App"})," \u2014 polling and signal voting with optional Karma-weighted participation."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-governance",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:"function vote(uint256 proposalId, bool support) external {\n uint256 weight = karma.balanceOf(msg.sender);\n proposals[proposalId].votes += support ? int256(weight) : -int256(weight);\n}\n"})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"// Read the user's Karma balance as their vote weight, then submit\nconst weight = await karma.balanceOf(userAddress);\nconsole.log(`Voting with weight: ${ethers.formatEther(weight)} KARMA`);\n\n// Call your governance contract\nconst tx = await governanceContract.vote(proposalId, support);\nawait tx.wait();\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"import { formatEther, parseAbi } from 'viem';\n\n// Read vote weight from Karma balance\nconst weight = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\nconsole.log(`Voting with weight: ${formatEther(weight)} KARMA`);\n\n// Submit vote via your governance contract\nconst { request } = await client.simulateContract({\n address: GOVERNANCE_ADDRESS,\n abi: parseAbi(['function vote(uint256 proposalId, bool support) external']),\n functionName: 'vote',\n args: [proposalId, support],\n account: userAddress,\n});\nawait walletClient.writeContract(request);\n"})})})]}),"\n",(0,r.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Refer to ",(0,r.jsx)(n.a,{href:"/build-for-karma/guides/gasless-integration",children:"Gasless Integration"})," to integrate Karma in making gasless transaction"]}),"\n",(0,r.jsxs)(n.li,{children:["Check out ",(0,r.jsx)(n.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," to see a breakdown of how Karma is earned and used"]}),"\n",(0,r.jsxs)(n.li,{children:["Go to ",(0,r.jsx)(n.a,{href:"/overview/general-info/gasless-transactions",children:"Gasless Transactions"})," to understand the technical details of the RLN-based gasless system"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}},8453:(e,n,a)=>{a.d(n,{R:()=>s,x:()=>o});var t=a(6540);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}},9365:(e,n,a)=>{a.d(n,{A:()=>s});a(6540);var t=a(4164);const r={tabItem:"tabItem_Ymn6"};var i=a(4848);function s({children:e,hidden:n,className:a}){return(0,i.jsx)("div",{role:"tabpanel",className:(0,t.A)(r.tabItem,a),hidden:n,children:e})}}}]); \ No newline at end of file diff --git a/assets/js/4e16d657.54bf4732.js b/assets/js/4e16d657.54bf4732.js new file mode 100644 index 0000000..a2c8301 --- /dev/null +++ b/assets/js/4e16d657.54bf4732.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[8377],{1470:(e,n,a)=>{a.d(n,{A:()=>y});var t=a(6540),r=a(4164),i=a(7559),s=a(3104),o=a(6347),l=a(205),c=a(7485),d=a(1682),u=a(679);function m(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:a}=e;return(0,t.useMemo)((()=>{const e=n??function(e){return m(e).map((({props:{value:e,label:n,attributes:a,default:t}})=>({value:e,label:n,attributes:a,default:t})))}(a);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,a])}function p({value:e,tabValues:n}){return n.some((n=>n.value===e))}function g({queryString:e=!1,groupId:n}){const a=(0,o.W6)(),r=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,c.aZ)(r),(0,t.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(a.location.search);n.set(r,e),a.replace({...a.location,search:n.toString()})}),[r,a])]}function b(e){const{defaultValue:n,queryString:a=!1,groupId:r}=e,i=h(e),[s,o]=(0,t.useState)((()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:i}))),[c,d]=g({queryString:a,groupId:r}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[a,r]=(0,u.Dv)(n);return[a,(0,t.useCallback)((e=>{n&&r.set(e)}),[n,r])]}({groupId:r}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,l.A)((()=>{f&&o(f)}),[f]);return{selectedValue:s,selectValue:(0,t.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),b(e)}),[d,b,i]),tabValues:i}}var f=a(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=a(4848);function A({className:e,block:n,selectedValue:a,selectValue:t,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),c=e=>{const n=e.currentTarget,r=o.indexOf(n),s=i[r].value;s!==a&&(l(n),t(s))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const a=o.indexOf(e.currentTarget)+1;n=o[a]??o[0];break}case"ArrowLeft":{const a=o.indexOf(e.currentTarget)-1;n=o[a]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},e),children:i.map((({value:e,label:n,attributes:t})=>(0,x.jsx)("li",{role:"tab",tabIndex:a===e?0:-1,"aria-selected":a===e,ref:e=>{o.push(e)},onKeyDown:d,onClick:c,...t,className:(0,r.A)("tabs__item",v.tabItem,t?.className,{"tabs__item--active":a===e}),children:n??e},e)))})}function w({lazy:e,children:n,selectedValue:a}){const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=i.find((e=>e.props.value===a));return e?(0,t.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function j(e){const n=b(e);return(0,x.jsxs)("div",{className:(0,r.A)(i.G.tabs.container,"tabs-container",v.tabList),children:[(0,x.jsx)(A,{...n,...e}),(0,x.jsx)(w,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,x.jsx)(j,{...e,children:m(e.children)},String(n))}},5240:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"build-for-karma/guides/reputation-integration","title":"Reputation Guide: Read Karma Tiers & Smart Contracts","description":"Learn to read Karma tiers on-chain. Build reputation-aware smart contracts that gate features and enable gasless interactions based on user contribution.","source":"@site/docs/build-for-karma/guides/reputation-integration.md","sourceDirName":"build-for-karma/guides","slug":"/build-for-karma/guides/reputation-integration","permalink":"/build-for-karma/guides/reputation-integration","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/guides/reputation-integration.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":4,"frontMatter":{"title":"Reputation Guide: Read Karma Tiers & Smart Contracts","description":"Learn to read Karma tiers on-chain. Build reputation-aware smart contracts that gate features and enable gasless interactions based on user contribution.","keywords":["Karma","integration","smart contract","soulbound token","reputation","tiers","gasless","Status Network","developer guide"],"slug":"/build-for-karma/guides/reputation-integration","sidebar_position":4},"sidebar":"buildForKarmaSidebar","previous":{"title":"\u26fd Gasless Integration","permalink":"/build-for-karma/guides/gasless-integration"},"next":{"title":"Deploy Your First Contract: Gasless Development Guide","permalink":"/build-for-karma/deploying-contracts"}}');var r=a(4848),i=a(8453),s=a(1470),o=a(9365);const l={title:"Reputation Guide: Read Karma Tiers & Smart Contracts",description:"Learn to read Karma tiers on-chain. Build reputation-aware smart contracts that gate features and enable gasless interactions based on user contribution.",keywords:["Karma","integration","smart contract","soulbound token","reputation","tiers","gasless","Status Network","developer guide"],slug:"/build-for-karma/guides/reputation-integration",sidebar_position:4},c="Reputation Integration Guide",d={},u=[{value:"Reading Karma On-Chain",id:"reading-karma-on-chain",level:2},{value:"Possible Integration Patterns",id:"possible-integration-patterns",level:2},{value:"Feature Gating",id:"feature-gating",level:3},{value:"Dynamic Pricing",id:"dynamic-pricing",level:3},{value:"Reputation Display",id:"reputation-display",level:3},{value:"Weighted Governance",id:"weighted-governance",level:3},{value:"Next Steps",id:"next-steps",level:2}];function m(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"reputation-integration-guide",children:"Reputation Integration Guide"})}),"\n",(0,r.jsx)(n.p,{children:"Karma is Status Network's soulbound reputation token. Every address earns Karma through genuine network participation such as staking SNT, bridging assets, providing liquidity, using apps, or paying premium gas fees. Karma cannot be bought, sold, or transferred."}),"\n",(0,r.jsx)(n.p,{children:"This guide covers how to read Karma data and build apps that respond to a user's reputation tier."}),"\n",(0,r.jsx)(n.h2,{id:"reading-karma-on-chain",children:"Reading Karma On-Chain"}),"\n",(0,r.jsx)(n.p,{children:"Karma state is split across two contracts:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Karma"})," \u2014 the soulbound ERC-20 token. ",(0,r.jsx)(n.code,{children:"balanceOf"})," returns the net balance after any slashing. Transfers and approvals always revert."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"KarmaTiers"})," \u2014 maps balances to tiers. Call ",(0,r.jsx)(n.code,{children:"getTierIdByKarmaBalance(balance)"})," then ",(0,r.jsx)(n.code,{children:"getTierById(tierId)"})," to resolve a user's tier and its ",(0,r.jsx)(n.code,{children:"txPerEpoch"})," quota."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-reading",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\n/// @notice Minimal interface for the Karma soulbound token.\ninterface IKarma {\n /// @notice Net Karma balance of `account` after slashing.\n function balanceOf(address account) external view returns (uint256);\n\n /// @notice Total amount slashed from `account` across all distributors.\n function slashedAmountOf(address account) external view returns (uint256);\n}\n\n/// @notice Minimal interface for the KarmaTiers registry.\ninterface IKarmaTiers {\n struct Tier {\n uint256 minKarma;\n uint256 maxKarma;\n string name;\n uint32 txPerEpoch; // gasless transactions allowed per epoch\n }\n\n /// @notice Returns the highest tier ID the given karma balance qualifies for.\n function getTierIdByKarmaBalance(uint256 karmaBalance) external view returns (uint8);\n\n /// @notice Returns the full Tier struct for a given tier ID.\n function getTierById(uint8 tierId) external view returns (Tier memory);\n\n /// @notice Returns the total number of configured tiers.\n function getTierCount() external view returns (uint256);\n}\n\ncontract KarmaGated {\n IKarma public karma;\n IKarmaTiers public karmaTiers;\n\n constructor(address _karmaContract, address _karmaTiersContract) {\n karma = IKarma(_karmaContract);\n karmaTiers = IKarmaTiers(_karmaTiersContract);\n }\n\n /// @notice Resolves the tier ID for `user` from their current Karma balance.\n function tierIdOf(address user) public view returns (uint8) {\n return karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));\n }\n\n modifier onlyTier(uint8 minTier) {\n require(tierIdOf(msg.sender) >= minTier, "Karma tier too low");\n _;\n }\n\n function premiumAction() external onlyTier(3) {\n // Only users at tier 3 or above can call this\n }\n\n function getDiscount(address user) external view returns (uint256) {\n uint8 tierId = tierIdOf(user);\n // Higher tiers get bigger discounts\n return uint256(tierId) * 5; // 0%, 5%, 10%, ...\n }\n}\n'})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.JsonRpcProvider(\n 'https://public.sepolia.rpc.status.network'\n);\n\nconst KARMA_ABI = [\n 'function balanceOf(address account) view returns (uint256)',\n 'function slashedAmountOf(address account) view returns (uint256)',\n];\n\nconst KARMA_TIERS_ABI = [\n 'function getTierIdByKarmaBalance(uint256 karmaBalance) view returns (uint8)',\n 'function getTierById(uint8 tierId) view returns (tuple(uint256 minKarma, uint256 maxKarma, string name, uint32 txPerEpoch))',\n 'function getTierCount() view returns (uint256)',\n];\n\nconst karma = new ethers.Contract(KARMA_ADDRESS, KARMA_ABI, provider);\nconst karmaTiers = new ethers.Contract(KARMA_TIERS_ADDRESS, KARMA_TIERS_ABI, provider);\n\n// Read a user's Karma balance and resolve their tier\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\nconst tier = await karmaTiers.getTierById(tierId);\n\nconsole.log(`Karma balance: ${ethers.formatEther(balance)} KARMA`);\nconsole.log(`Tier: ${tier.name} (ID ${tierId})`);\nconsole.log(`Tx quota per epoch: ${tier.txPerEpoch}`);\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"import { createPublicClient, http } from 'viem';\n\nconst client = createPublicClient({\n transport: http('https://public.sepolia.rpc.status.network'),\n});\n\nconst karmaAbi = [\n {\n name: 'balanceOf',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n },\n {\n name: 'slashedAmountOf',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n },\n] as const;\n\nconst karmaTiersAbi = [\n {\n name: 'getTierIdByKarmaBalance',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'karmaBalance', type: 'uint256' }],\n outputs: [{ name: '', type: 'uint8' }],\n },\n {\n name: 'getTierById',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'tierId', type: 'uint8' }],\n outputs: [{\n name: 'tier',\n type: 'tuple',\n components: [\n { name: 'minKarma', type: 'uint256' },\n { name: 'maxKarma', type: 'uint256' },\n { name: 'name', type: 'string' },\n { name: 'txPerEpoch', type: 'uint32' },\n ],\n }],\n },\n] as const;\n\n// Two sequential reads: balance \u2192 tier ID \u2192 tier details\nconst balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nconst tier = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierById',\n args: [tierId],\n});\n\nconsole.log(`Tier: ${tier.name} (ID ${tierId})`);\nconsole.log(`Tx quota per epoch: ${tier.txPerEpoch}`);\n"})})})]}),"\n",(0,r.jsx)(n.admonition,{title:"Contract Addresses",type:"note",children:(0,r.jsxs)(n.p,{children:["Karma and KarmaTiers contract addresses for testnet are published on the ",(0,r.jsx)(n.a,{href:"/overview/general-info/contract-addresses/testnet-contracts",children:"Contract Addresses"})," page."]})}),"\n",(0,r.jsx)(n.h2,{id:"possible-integration-patterns",children:"Possible Integration Patterns"}),"\n",(0,r.jsx)(n.h3,{id:"feature-gating",children:"Feature Gating"}),"\n",(0,r.jsxs)(n.p,{children:["Unlock features based on Karma tier.\nThe ",(0,r.jsx)(n.code,{children:"onlyTier"})," modifier you can check from the ",(0,r.jsx)(n.a,{href:"#reading-karma-on-chain",children:"Reading Karma On-Chain"})," section can restrict access at the contract level.\nAlternatively, you can use ",(0,r.jsx)(n.code,{children:"tierId"})," in your code to gate features:"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"Karma-Gated Content Feed"})," \u2014 a ready-to-scope app built entirely around this pattern."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-gating",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:"function accessPremiumContent() external onlyTier(3) {\n // Only users at tier 3 or above can call this\n}\n"})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"// Resolve tier from Karma balance, then gate UI features\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\n\nif (tierId >= 3) {\n showPremiumFeatures();\n} else {\n showUpgradePrompt(tierId);\n}\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"const balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nif (tierId >= 3) {\n showPremiumFeatures();\n} else {\n showUpgradePrompt(tierId);\n}\n"})})})]}),"\n",(0,r.jsx)(n.h3,{id:"dynamic-pricing",children:"Dynamic Pricing"}),"\n",(0,r.jsx)(n.p,{children:"Offer discounts or better rates to high-Karma users:"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"Karma-Tiered NFT Marketplace"})," \u2014 a marketplace where fees and access windows scale automatically with a buyer's Karma tier."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-pricing",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:"function calculateFee(address user, uint256 baseAmount) public view returns (uint256) {\n uint8 tierId = karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));\n // Each tier gives 5% discount\n uint256 discount = uint256(tierId) * 5;\n return baseAmount * (100 - discount) / 100;\n}\n"})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"// Compute the discounted fee on the client-side from the user's current tier\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\n\nconst discount = BigInt(tierId) * 5n; // 5% per tier\nconst fee = baseAmount * (100n - discount) / 100n;\n\nconsole.log(`Tier ${tierId}: ${discount}% discount \u2192 fee = ${fee}`);\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"const balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nconst discount = BigInt(tierId) * 5n; // 5% per tier\nconst fee = baseAmount * (100n - discount) / 100n;\n\nconsole.log(`Tier ${tierId}: ${discount}% discount \u2192 fee = ${fee}`);\n"})})})]}),"\n",(0,r.jsx)(n.h3,{id:"reputation-display",children:"Reputation Display"}),"\n",(0,r.jsxs)(n.p,{children:["Show Karma tier as a trust index in your UI by reading the tier name directly from the ",(0,r.jsx)(n.code,{children:"KarmaTiers"})," contract:"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"Gasless Micro-Blogging Platform"})," \u2014 a social feed with Karma trust badges embedded in profiles and posts."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-display",children:[(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'// Fetch tier name on-chain \u2014 no hardcoded array needed\nconst balance = await karma.balanceOf(userAddress);\nconst tierId = await karmaTiers.getTierIdByKarmaBalance(balance);\nconst tier = await karmaTiers.getTierById(tierId);\n\nfunction KarmaBadge({ tierName }) {\n return {tierName};\n}\n\n// Usage\n\n'})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"const balance = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\n\nconst tierId = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierIdByKarmaBalance',\n args: [balance],\n});\n\nconst tier = await client.readContract({\n address: KARMA_TIERS_ADDRESS,\n abi: karmaTiersAbi,\n functionName: 'getTierById',\n args: [tierId],\n});\n\nfunction KarmaBadge({ tierName }: { tierName: string }) {\n return {tierName};\n}\n\n// Usage\n\n"})})})]}),"\n",(0,r.jsx)(n.h3,{id:"weighted-governance",children:"Weighted Governance"}),"\n",(0,r.jsx)(n.p,{children:"Use Karma for vote weighting in your app's governance:"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Catalog idea:"})," ",(0,r.jsx)(n.a,{href:"/build-for-karma/what-to-build",children:"DAO Proposal & Karma-Weighted Voting App"})," \u2014 polling and signal voting with optional Karma-weighted participation."]}),"\n"]}),"\n",(0,r.jsxs)(s.A,{groupId:"karma-governance",children:[(0,r.jsx)(o.A,{value:"solidity",label:"Solidity",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-solidity",children:"function vote(uint256 proposalId, bool support) external {\n uint256 weight = karma.balanceOf(msg.sender);\n proposals[proposalId].votes += support ? int256(weight) : -int256(weight);\n}\n"})})}),(0,r.jsx)(o.A,{value:"ethers",label:"ethers.js",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"// Read the user's Karma balance as their vote weight, then submit\nconst weight = await karma.balanceOf(userAddress);\nconsole.log(`Voting with weight: ${ethers.formatEther(weight)} KARMA`);\n\n// Call your governance contract\nconst tx = await governanceContract.vote(proposalId, support);\nawait tx.wait();\n"})})}),(0,r.jsx)(o.A,{value:"viem",label:"viem",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"import { formatEther, parseAbi } from 'viem';\n\n// Read vote weight from Karma balance\nconst weight = await client.readContract({\n address: KARMA_ADDRESS,\n abi: karmaAbi,\n functionName: 'balanceOf',\n args: [userAddress],\n});\nconsole.log(`Voting with weight: ${formatEther(weight)} KARMA`);\n\n// Submit vote via your governance contract\nconst { request } = await client.simulateContract({\n address: GOVERNANCE_ADDRESS,\n abi: parseAbi(['function vote(uint256 proposalId, bool support) external']),\n functionName: 'vote',\n args: [proposalId, support],\n account: userAddress,\n});\nawait walletClient.writeContract(request);\n"})})})]}),"\n",(0,r.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Refer to ",(0,r.jsx)(n.a,{href:"/build-for-karma/guides/gasless-integration",children:"Gasless Integration"})," to integrate Karma in making gasless transaction"]}),"\n",(0,r.jsxs)(n.li,{children:["Check out ",(0,r.jsx)(n.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," to see a breakdown of how Karma is earned and used"]}),"\n",(0,r.jsxs)(n.li,{children:["Go to ",(0,r.jsx)(n.a,{href:"/overview/general-info/gasless-transactions",children:"Gasless Transactions"})," to understand the technical details of the RLN-based gasless system"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}},8453:(e,n,a)=>{a.d(n,{R:()=>s,x:()=>o});var t=a(6540);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}},9365:(e,n,a)=>{a.d(n,{A:()=>s});a(6540);var t=a(4164);const r={tabItem:"tabItem_Ymn6"};var i=a(4848);function s({children:e,hidden:n,className:a}){return(0,i.jsx)("div",{role:"tabpanel",className:(0,t.A)(r.tabItem,a),hidden:n,children:e})}}}]); \ No newline at end of file diff --git a/assets/js/5057d25c.32fa27f1.js b/assets/js/5057d25c.32fa27f1.js deleted file mode 100644 index 0f76bcf..0000000 --- a/assets/js/5057d25c.32fa27f1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2934],{4204:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"build-for-karma/deploying-contracts/deploying-contracts-index","title":"Deploy Your First Contract","description":"Choose your preferred deployment tool to get a smart contract live on Status Network. Guides available for Hardhat, Foundry, Remix, and Scaffold-ETH 2.","source":"@site/docs/build-for-karma/deploying-contracts/index.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts","permalink":"/build-for-karma/deploying-contracts","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/index.md","tags":[],"version":"current","lastUpdatedAt":1774460236000,"sidebarPosition":1,"frontMatter":{"id":"deploying-contracts-index","title":"Deploy Your First Contract","description":"Choose your preferred deployment tool to get a smart contract live on Status Network. Guides available for Hardhat, Foundry, Remix, and Scaffold-ETH 2.","keywords":["deploy smart contract","Status Network","Hardhat","Foundry","Remix","Scaffold-ETH 2","blockchain deployment","EVM"],"slug":"/build-for-karma/deploying-contracts","sidebar_position":1},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83d\udd30 Reputation Integration","permalink":"/build-for-karma/guides/reputation-integration"},"next":{"title":"\ud83c\udfa9 Using Hardhat","permalink":"/build-for-karma/deploying-contracts/using-hardhat"}}');var n=r(4848),s=r(8453);const a={id:"deploying-contracts-index",title:"Deploy Your First Contract",description:"Choose your preferred deployment tool to get a smart contract live on Status Network. Guides available for Hardhat, Foundry, Remix, and Scaffold-ETH 2.",keywords:["deploy smart contract","Status Network","Hardhat","Foundry","Remix","Scaffold-ETH 2","blockchain deployment","EVM"],slug:"/build-for-karma/deploying-contracts",sidebar_position:1},i=void 0,d={},l=[{value:"Choose a Deployment Tool",id:"choose-a-deployment-tool",level:2},{value:"Not Sure Which to Pick?",id:"not-sure-which-to-pick",level:2},{value:"After Deployment",id:"after-deployment",level:2}];function c(e){const t={a:"a",admonition:"admonition",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Status Network is fully EVM-compatible, so you can deploy contracts using any standard Ethereum toolchain. Pick the tool that fits your workflow and follow the step-by-step guide to get your first contract live on the testnet."}),"\n",(0,n.jsx)(t.admonition,{title:"Before you start",type:"tip",children:(0,n.jsxs)(t.p,{children:["Make sure you've ",(0,n.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"added Status Network to your wallet"})," and grabbed some ",(0,n.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"testnet ETH"}),"."]})}),"\n",(0,n.jsx)(t.admonition,{title:"Porting from Ethereum mainnet?",type:"tip",children:(0,n.jsxs)(t.p,{children:["Status Network is EVM-compatible, but there are minor execution-level differences inherited from the Linea zkEVM stack. See ",(0,n.jsx)(t.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"Ethereum Differences"})," for details on opcodes, precompiles, and transaction types."]})}),"\n",(0,n.jsx)(t.h2,{id:"choose-a-deployment-tool",children:"Choose a Deployment Tool"}),"\n",(0,n.jsxs)("div",{className:"deploy-card-grid",children:[(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-hardhat",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\ud83c\udfa9"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Hardhat"}),(0,n.jsx)("p",{children:"The industry-standard development environment for compiling, testing, and deploying Solidity contracts. Includes Hardhat Ignition and TypeScript support."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"TypeScript \xb7 Testing \xb7 Ignition"})]})]}),(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-foundry",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\u2692\ufe0f"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Foundry"}),(0,n.jsx)("p",{children:"A blazing-fast, Rust-based toolkit for smart contract development. Write tests in Solidity and interact with contracts using Cast."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"Solidity Tests \xb7 Cast \xb7 Fast Builds"})]})]}),(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-remix",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\ud83c\udf9b\ufe0f"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Remix IDE"}),(0,n.jsx)("p",{children:"A browser-based IDE with zero setup \u2014 perfect for quick prototyping, learning, and deploying simple contracts without any local tooling."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"Browser-Based \xb7 No Setup \xb7 Beginner-Friendly"})]})]}),(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-se2",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\ud83c\udfd7\ufe0f"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Scaffold-ETH 2"}),(0,n.jsx)("p",{children:"A full-stack starter kit with a pre-configured Status Network extension. Includes a NextJS frontend, contract hot-reload, and both Hardhat and Foundry support."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"Full-Stack \xb7 NextJS \xb7 Hot Reload"})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"not-sure-which-to-pick",children:"Not Sure Which to Pick?"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Tool"}),(0,n.jsx)(t.th,{children:"Best For"}),(0,n.jsx)(t.th,{children:"Setup Required"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Hardhat"})}),(0,n.jsx)(t.td,{children:"Production projects with complex testing and deployment pipelines"}),(0,n.jsx)(t.td,{children:"Node.js + npm"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Foundry"})}),(0,n.jsx)(t.td,{children:"Developers who prefer Solidity-native testing and fast compilation"}),(0,n.jsx)(t.td,{children:"Rust toolchain"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Remix"})}),(0,n.jsx)(t.td,{children:"Quick experiments, learning, and simple one-off deployments"}),(0,n.jsx)(t.td,{children:"None (browser)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Scaffold-ETH 2"})}),(0,n.jsx)(t.td,{children:"Full-stack dApps that need a frontend from day one"}),(0,n.jsx)(t.td,{children:"Node.js + npm"})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"after-deployment",children:"After Deployment"}),"\n",(0,n.jsx)(t.p,{children:"Once your contract is live, here are your next steps:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/guides/gasless-integration",children:"Integrate gasless transactions"})," through Karma so your users never pay gas"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/guides/reputation-integration",children:"Read reputation integration guide"})," to build reputation-aware features using Karma"]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>i});var o=r(6540);const n={},s=o.createContext(n);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5057d25c.7b6f3e94.js b/assets/js/5057d25c.7b6f3e94.js new file mode 100644 index 0000000..9f175f2 --- /dev/null +++ b/assets/js/5057d25c.7b6f3e94.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2934],{4204:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"build-for-karma/deploying-contracts/deploying-contracts-index","title":"Deploy Your First Contract: Gasless Development Guide","description":"Choose your deployment tool for Status Network. Step-by-step guides for Hardhat, Foundry, and Remix to get your smart contracts live on our gasless L2.","source":"@site/docs/build-for-karma/deploying-contracts/index.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts","permalink":"/build-for-karma/deploying-contracts","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/index.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":1,"frontMatter":{"id":"deploying-contracts-index","title":"Deploy Your First Contract: Gasless Development Guide","description":"Choose your deployment tool for Status Network. Step-by-step guides for Hardhat, Foundry, and Remix to get your smart contracts live on our gasless L2.","keywords":["deploy smart contract","Status Network","Hardhat","Foundry","Remix","Scaffold-ETH 2","blockchain deployment","EVM"],"slug":"/build-for-karma/deploying-contracts","sidebar_position":1},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83d\udd30 Reputation Integration","permalink":"/build-for-karma/guides/reputation-integration"},"next":{"title":"\ud83c\udfa9 Using Hardhat","permalink":"/build-for-karma/deploying-contracts/using-hardhat"}}');var n=r(4848),s=r(8453);const a={id:"deploying-contracts-index",title:"Deploy Your First Contract: Gasless Development Guide",description:"Choose your deployment tool for Status Network. Step-by-step guides for Hardhat, Foundry, and Remix to get your smart contracts live on our gasless L2.",keywords:["deploy smart contract","Status Network","Hardhat","Foundry","Remix","Scaffold-ETH 2","blockchain deployment","EVM"],slug:"/build-for-karma/deploying-contracts",sidebar_position:1},i="Deploy Your First Contract",d={},l=[{value:"Choose a Deployment Tool",id:"choose-a-deployment-tool",level:2},{value:"Not Sure Which to Pick?",id:"not-sure-which-to-pick",level:2},{value:"After Deployment",id:"after-deployment",level:2}];function c(e){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"deploy-your-first-contract",children:"Deploy Your First Contract"})}),"\n",(0,n.jsx)(t.p,{children:"Status Network is fully EVM-compatible, so you can deploy contracts using any standard Ethereum toolchain. Pick the tool that fits your workflow and follow the step-by-step guide to get your first contract live on the testnet."}),"\n",(0,n.jsx)(t.admonition,{title:"Before you start",type:"tip",children:(0,n.jsxs)(t.p,{children:["Make sure you've ",(0,n.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"added Status Network to your wallet"})," and grabbed some ",(0,n.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"testnet ETH"}),"."]})}),"\n",(0,n.jsx)(t.admonition,{title:"Porting from Ethereum mainnet?",type:"tip",children:(0,n.jsxs)(t.p,{children:["Status Network is EVM-compatible, but there are minor execution-level differences inherited from the Linea zkEVM stack. See ",(0,n.jsx)(t.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"Ethereum Differences"})," for details on opcodes, precompiles, and transaction types."]})}),"\n",(0,n.jsx)(t.h2,{id:"choose-a-deployment-tool",children:"Choose a Deployment Tool"}),"\n",(0,n.jsxs)("div",{className:"deploy-card-grid",children:[(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-hardhat",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\ud83c\udfa9"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Hardhat"}),(0,n.jsx)("p",{children:"The industry-standard development environment for compiling, testing, and deploying Solidity contracts. Includes Hardhat Ignition and TypeScript support."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"TypeScript \xb7 Testing \xb7 Ignition"})]})]}),(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-foundry",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\u2692\ufe0f"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Foundry"}),(0,n.jsx)("p",{children:"A blazing-fast, Rust-based toolkit for smart contract development. Write tests in Solidity and interact with contracts using Cast."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"Solidity Tests \xb7 Cast \xb7 Fast Builds"})]})]}),(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-remix",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\ud83c\udf9b\ufe0f"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Remix IDE"}),(0,n.jsx)("p",{children:"A browser-based IDE with zero setup \u2014 perfect for quick prototyping, learning, and deploying simple contracts without any local tooling."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"Browser-Based \xb7 No Setup \xb7 Beginner-Friendly"})]})]}),(0,n.jsxs)("a",{className:"deploy-card",href:"/build-for-karma/deploying-contracts/using-se2",children:[(0,n.jsx)("div",{className:"deploy-card-icon",children:"\ud83c\udfd7\ufe0f"}),(0,n.jsxs)("div",{className:"deploy-card-content",children:[(0,n.jsx)("h3",{children:"Scaffold-ETH 2"}),(0,n.jsx)("p",{children:"A full-stack starter kit with a pre-configured Status Network extension. Includes a NextJS frontend, contract hot-reload, and both Hardhat and Foundry support."}),(0,n.jsx)("span",{className:"deploy-card-tag",children:"Full-Stack \xb7 NextJS \xb7 Hot Reload"})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"not-sure-which-to-pick",children:"Not Sure Which to Pick?"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Tool"}),(0,n.jsx)(t.th,{children:"Best For"}),(0,n.jsx)(t.th,{children:"Setup Required"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Hardhat"})}),(0,n.jsx)(t.td,{children:"Production projects with complex testing and deployment pipelines"}),(0,n.jsx)(t.td,{children:"Node.js + npm"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Foundry"})}),(0,n.jsx)(t.td,{children:"Developers who prefer Solidity-native testing and fast compilation"}),(0,n.jsx)(t.td,{children:"Rust toolchain"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Remix"})}),(0,n.jsx)(t.td,{children:"Quick experiments, learning, and simple one-off deployments"}),(0,n.jsx)(t.td,{children:"None (browser)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Scaffold-ETH 2"})}),(0,n.jsx)(t.td,{children:"Full-stack dApps that need a frontend from day one"}),(0,n.jsx)(t.td,{children:"Node.js + npm"})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"after-deployment",children:"After Deployment"}),"\n",(0,n.jsx)(t.p,{children:"Once your contract is live, here are your next steps:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/guides/gasless-integration",children:"Integrate gasless transactions"})," through Karma so your users never pay gas"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/guides/reputation-integration",children:"Read reputation integration guide"})," to build reputation-aware features using Karma"]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>i});var o=r(6540);const n={},s=o.createContext(n);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5d0af9ca.2c5e617b.js b/assets/js/5d0af9ca.2c5e617b.js deleted file mode 100644 index 1926d7f..0000000 --- a/assets/js/5d0af9ca.2c5e617b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[3534],{3108:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>l,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"overview/general-info/network-details","title":"Status Network Details & Configuration","description":"Official network details for Status Network testnet including RPC endpoints, Chain ID, and configuration information for wallets and development environments.","source":"@site/docs/overview/general-info/network-details.md","sourceDirName":"overview/general-info","slug":"/overview/general-info/network-details","permalink":"/overview/general-info/network-details","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/network-details.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"id":"network-details","title":"Status Network Details & Configuration","description":"Official network details for Status Network testnet including RPC endpoints, Chain ID, and configuration information for wallets and development environments.","keywords":["Status Network","network details","RPC endpoint","Chain ID","testnet configuration","blockchain network","MetaMask setup"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udcb0 Pre-Deposits","permalink":"/overview/tokenomics/pre-deposits"},"next":{"title":"\u26fd Gasless Transactions","permalink":"/overview/general-info/gasless-transactions"}}');var r=n(4848),i=n(8453),o=n(9227),a=n(5995);const l={id:"network-details",title:"Status Network Details & Configuration",description:"Official network details for Status Network testnet including RPC endpoints, Chain ID, and configuration information for wallets and development environments.",keywords:["Status Network","network details","RPC endpoint","Chain ID","testnet configuration","blockchain network","MetaMask setup"]},d="Network Details",c={},h=[{value:"Status Testnet",id:"status-testnet",level:2}];function u(t){const e={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.header,{children:(0,r.jsx)(e.h1,{id:"network-details",children:"Network Details"})}),"\n",(0,r.jsx)(e.h2,{id:"status-testnet",children:"Status Testnet"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Name"}),(0,r.jsx)(e.th,{children:"Value"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"Network Name"})}),(0,r.jsx)(e.td,{children:"Status Network Testnet"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"RPC Endpoint"})}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://public.sepolia.rpc.status.network",children:"https://public.sepolia.rpc.status.network"})," ",(0,r.jsx)(a.A,{text:"https://public.sepolia.rpc.status.network",ariaLabel:"Copy RPC endpoint"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"Chain ID"})}),(0,r.jsxs)(e.td,{children:["1660990954 ",(0,r.jsx)(a.A,{text:"1660990954",ariaLabel:"Copy Chain ID"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"Chain ID (Hex)"})}),(0,r.jsxs)(e.td,{children:["0x6300b5ea ",(0,r.jsx)(a.A,{text:"0x6300b5ea",ariaLabel:"Copy Hex Chain ID"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"Currency Symbol"})}),(0,r.jsx)(e.td,{children:"ETH"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"Block Explorer"})}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://sepoliascan.status.network",children:"https://sepoliascan.status.network"})," ",(0,r.jsx)(a.A,{text:"https://sepoliascan.status.network",ariaLabel:"Copy block explorer URL"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"Bridge"})}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"})," ",(0,r.jsx)(a.A,{text:"https://bridge.status.network",ariaLabel:"Copy bridge URL"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.strong,{children:"WebSocket RPC"})}),(0,r.jsxs)(e.td,{children:["Get in touch with us on ",(0,r.jsx)(e.a,{href:"https://t.me/statusl2",children:"Telegram"})," to get a websocket RPC"]})]})]})]}),"\n",(0,r.jsx)(o.A,{}),"\n",(0,r.jsx)("div",{style:{height:"2rem"}}),"\n",(0,r.jsx)(e.p,{children:"These are the official network details for the Status Network testnet. You can use these details to:"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:"Add the network to your wallet"}),"\n",(0,r.jsx)(e.li,{children:"Configure development environments"}),"\n",(0,r.jsx)(e.li,{children:"Connect dApps to the network"}),"\n",(0,r.jsx)(e.li,{children:"Verify smart contracts"}),"\n"]}),"\n",(0,r.jsxs)(e.p,{children:["For instructions on adding the network to your wallet, see our ",(0,r.jsx)(e.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network guide"}),"."]})]})}function p(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}},5995:(t,e,n)=>{n.d(e,{A:()=>i});var s=n(6540),r=n(4848);function i({text:t,ariaLabel:e}){const[n,i]=(0,s.useState)(!1);return(0,r.jsx)("button",{type:"button",className:"button button--sm button--secondary","aria-label":e||`Copy ${t}`,onClick:async()=>{try{if("undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}i(!0),window.setTimeout((()=>i(!1)),1500)}catch(e){console.error("Copy failed",e)}},title:n?"Copied!":"Copy to clipboard",style:{float:"right",marginLeft:"8px"},children:(0,r.jsx)("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center"},children:n?(0,r.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):(0,r.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,r.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2",stroke:"currentColor",strokeWidth:"2"}),(0,r.jsx)("path",{d:"M5 15H4C2.895 15 2 14.105 2 13V4C2 2.895 2.895 2 4 2H13C14.105 2 15 2.895 15 4V5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}},8453:(t,e,n)=>{n.d(e,{R:()=>o,x:()=>a});var s=n(6540);const r={},i=s.createContext(r);function o(t){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:o(t.components),s.createElement(i.Provider,{value:e},t.children)}},9227:(t,e,n)=>{n.d(e,{A:()=>r});n(6540);var s=n(4848);function r(){return(0,s.jsxs)("button",{className:"button button--primary",onClick:async()=>{if("undefined"!=typeof window&&window.ethereum)try{await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:"0x6300B5EA",chainName:"Status Network Testnet",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://public.sepolia.rpc.status.network"],blockExplorerUrls:["https://sepoliascan.status.network"]}]})}catch(t){console.error(t),alert("Failed to add the network to MetaMask. Please try again.")}else alert("MetaMask is not installed. Please install MetaMask first.")},children:[(0,s.jsx)("img",{src:"https://docs.status.network/img/metamask.svg",alt:"MetaMask Fox",style:{width:"20px",height:"20px",marginRight:"8px",verticalAlign:"middle"}}),"Add Status Network Testnet"]})}}}]); \ No newline at end of file diff --git a/assets/js/5d0af9ca.6e487d27.js b/assets/js/5d0af9ca.6e487d27.js new file mode 100644 index 0000000..63d6464 --- /dev/null +++ b/assets/js/5d0af9ca.6e487d27.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[3534],{3108:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>l,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"overview/general-info/network-details","title":"Network Details: Status Network Chain ID & Config","description":"Official network configuration for Status Network. Find Chain IDs, RPC URLs, and block explorer links for wallet setup and developer environment config.","source":"@site/docs/overview/general-info/network-details.md","sourceDirName":"overview/general-info","slug":"/overview/general-info/network-details","permalink":"/overview/general-info/network-details","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/network-details.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"id":"network-details","title":"Network Details: Status Network Chain ID & Config","description":"Official network configuration for Status Network. Find Chain IDs, RPC URLs, and block explorer links for wallet setup and developer environment config.","keywords":["Status Network","network details","RPC endpoint","Chain ID","testnet configuration","blockchain network","MetaMask setup"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udcb0 Pre-Deposits","permalink":"/overview/tokenomics/pre-deposits"},"next":{"title":"\u26fd Gasless Transactions","permalink":"/overview/general-info/gasless-transactions"}}');var r=n(4848),o=n(8453),i=n(9227),a=n(5995);const l={id:"network-details",title:"Network Details: Status Network Chain ID & Config",description:"Official network configuration for Status Network. Find Chain IDs, RPC URLs, and block explorer links for wallet setup and developer environment config.",keywords:["Status Network","network details","RPC endpoint","Chain ID","testnet configuration","blockchain network","MetaMask setup"]},d="Network Details",c={},h=[{value:"Status Testnet",id:"status-testnet",level:2}];function u(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"network-details",children:"Network Details"})}),"\n",(0,r.jsx)(t.h2,{id:"status-testnet",children:"Status Testnet"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Value"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Network Name"})}),(0,r.jsx)(t.td,{children:"Status Network Testnet"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"RPC Endpoint"})}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://public.sepolia.rpc.status.network",children:"https://public.sepolia.rpc.status.network"})," ",(0,r.jsx)(a.A,{text:"https://public.sepolia.rpc.status.network",ariaLabel:"Copy RPC endpoint"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Chain ID"})}),(0,r.jsxs)(t.td,{children:["1660990954 ",(0,r.jsx)(a.A,{text:"1660990954",ariaLabel:"Copy Chain ID"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Chain ID (Hex)"})}),(0,r.jsxs)(t.td,{children:["0x6300b5ea ",(0,r.jsx)(a.A,{text:"0x6300b5ea",ariaLabel:"Copy Hex Chain ID"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Currency Symbol"})}),(0,r.jsx)(t.td,{children:"ETH"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Block Explorer"})}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"https://sepoliascan.status.network"})," ",(0,r.jsx)(a.A,{text:"https://sepoliascan.status.network",ariaLabel:"Copy block explorer URL"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Bridge"})}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"})," ",(0,r.jsx)(a.A,{text:"https://bridge.status.network",ariaLabel:"Copy bridge URL"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"WebSocket RPC"})}),(0,r.jsxs)(t.td,{children:["Get in touch with us on ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram"})," to get a websocket RPC"]})]})]})]}),"\n",(0,r.jsx)(i.A,{}),"\n",(0,r.jsx)("div",{style:{height:"2rem"}}),"\n",(0,r.jsx)(t.p,{children:"These are the official network details for the Status Network testnet. You can use these details to:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Add the network to your wallet"}),"\n",(0,r.jsx)(t.li,{children:"Configure development environments"}),"\n",(0,r.jsx)(t.li,{children:"Connect dApps to the network"}),"\n",(0,r.jsx)(t.li,{children:"Verify smart contracts"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For instructions on adding the network to your wallet, see our ",(0,r.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network guide"}),"."]})]})}function p(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},5995:(e,t,n)=>{n.d(t,{A:()=>o});var s=n(6540),r=n(4848);function o({text:e,ariaLabel:t}){const[n,o]=(0,s.useState)(!1);return(0,r.jsx)("button",{type:"button",className:"button button--sm button--secondary","aria-label":t||`Copy ${e}`,onClick:async()=>{try{if("undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}o(!0),window.setTimeout((()=>o(!1)),1500)}catch(t){console.error("Copy failed",t)}},title:n?"Copied!":"Copy to clipboard",style:{float:"right",marginLeft:"8px"},children:(0,r.jsx)("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center"},children:n?(0,r.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):(0,r.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,r.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2",stroke:"currentColor",strokeWidth:"2"}),(0,r.jsx)("path",{d:"M5 15H4C2.895 15 2 14.105 2 13V4C2 2.895 2.895 2 4 2H13C14.105 2 15 2.895 15 4V5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}},9227:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(4848);function r(){return(0,s.jsxs)("button",{className:"button button--primary",onClick:async()=>{if("undefined"!=typeof window&&window.ethereum)try{await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:"0x6300B5EA",chainName:"Status Network Testnet",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://public.sepolia.rpc.status.network"],blockExplorerUrls:["https://sepoliascan.status.network"]}]})}catch(e){console.error(e),alert("Failed to add the network to MetaMask. Please try again.")}else alert("MetaMask is not installed. Please install MetaMask first.")},children:[(0,s.jsx)("img",{src:"https://docs.status.network/img/metamask.svg",alt:"MetaMask Fox",style:{width:"20px",height:"20px",marginRight:"8px",verticalAlign:"middle"}}),"Add Status Network Testnet"]})}}}]); \ No newline at end of file diff --git a/assets/js/66fb3cbd.2c7dc00c.js b/assets/js/66fb3cbd.2c7dc00c.js new file mode 100644 index 0000000..06cf4d7 --- /dev/null +++ b/assets/js/66fb3cbd.2c7dc00c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9475],{3856:(e,a,i)=>{i.r(a),i.d(a,{assets:()=>ge,contentTitle:()=>ue,default:()=>he,frontMatter:()=>ce,metadata:()=>t,toc:()=>me});const t=JSON.parse('{"id":"build-for-karma/what-to-build","title":"What to Build: High-Leverage Ideas for Status Network","description":"Explore app ideas for Status Network: private DeFi, gasless social apps, and agentic markets. Leverage Karma reputation and RLN-based spam protection.","source":"@site/docs/build-for-karma/what-to-build.md","sourceDirName":"build-for-karma","slug":"/build-for-karma/what-to-build","permalink":"/build-for-karma/what-to-build","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/what-to-build.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":3,"frontMatter":{"title":"What to Build: High-Leverage Ideas for Status Network","description":"Explore app ideas for Status Network: private DeFi, gasless social apps, and agentic markets. Leverage Karma reputation and RLN-based spam protection.","keywords":["Status Network","app ideas","builder ideas","Karma apps","privacy apps","gasless apps","DeFi","social apps","games","MVP"],"sidebar_position":3},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83c\udf1f Why Status Network","permalink":"/build-for-karma/why-status-network"},"next":{"title":"Using Karma: Integration Guides for Reputation Logic","permalink":"/build-for-karma/guides"}}');var s=i(4848),r=i(8453),o=i(6540),d=i(1312);const n="reputation",l="privacy",c="social",u="games",g="defi",m="gasless",p="reputation",h="privacy",y="frontend-dev",f="contract-dev",v="full-stack",w="protocol-dev",b="Low-Med",C="Med",T="Med-High",k="High",x="consumer",S="community-creator",P="dao-org-ops",j="trader-defi",N="community-design",M="defi-mechanisms",_="privacy",E="payments-finops",q="consumer-product",R="none",B="operating-treasury",A="seed-liquidity",D="deep-liquidity",K="Low",L="Medium",F="High",G="Critical",H="Low",I="Medium",O="High",W="Very High",U={[n]:(0,d.T)({id:"ideaCatalog.category.reputation",message:"Reputation"}),[l]:(0,d.T)({id:"ideaCatalog.category.privacy",message:"Privacy"}),[c]:(0,d.T)({id:"ideaCatalog.category.social",message:"Social"}),[u]:(0,d.T)({id:"ideaCatalog.category.games",message:"Games"}),[g]:(0,d.T)({id:"ideaCatalog.category.defi",message:"DeFi"})},V={[b]:(0,d.T)({id:"ideaCatalog.difficulty.lowMed",message:"Low-Med"}),[C]:(0,d.T)({id:"ideaCatalog.difficulty.med",message:"Med"}),[T]:(0,d.T)({id:"ideaCatalog.difficulty.medHigh",message:"Med-High"}),[k]:(0,d.T)({id:"ideaCatalog.difficulty.high",message:"High"})},$={[x]:(0,d.T)({id:"ideaCatalog.userSegment.consumer",message:"Consumer"}),[S]:(0,d.T)({id:"ideaCatalog.userSegment.communityCreator",message:"Community/Creator"}),[P]:(0,d.T)({id:"ideaCatalog.userSegment.daoOrgOps",message:"DAO/Org Ops"}),[j]:(0,d.T)({id:"ideaCatalog.userSegment.traderDefi",message:"Trader/DeFi"})},X={[N]:(0,d.T)({id:"ideaCatalog.domainExpertise.communityDesign",message:"Community Design"}),[M]:(0,d.T)({id:"ideaCatalog.domainExpertise.defiMechanisms",message:"DeFi Mechanisms"}),[_]:(0,d.T)({id:"ideaCatalog.domainExpertise.privacy",message:"Privacy"}),[E]:(0,d.T)({id:"ideaCatalog.domainExpertise.paymentsFinops",message:"Payments/FinOps"}),[q]:(0,d.T)({id:"ideaCatalog.domainExpertise.consumerProduct",message:"Consumer Product"})},Y={[R]:(0,d.T)({id:"ideaCatalog.capitalReq.none",message:"None"}),[B]:(0,d.T)({id:"ideaCatalog.capitalReq.operatingTreasury",message:"Operating Treasury"}),[A]:(0,d.T)({id:"ideaCatalog.capitalReq.seedLiquidity",message:"Seed Liquidity"}),[D]:(0,d.T)({id:"ideaCatalog.capitalReq.deepLiquidity",message:"Deep Liquidity"})},z={[m]:(0,d.T)({id:"ideaCatalog.statusPrimitive.gasless",message:"Gasless UX"}),[p]:(0,d.T)({id:"ideaCatalog.statusPrimitive.reputation",message:"Reputation"}),[h]:(0,d.T)({id:"ideaCatalog.statusPrimitive.privacy",message:"Privacy Primitives"})},J={[y]:(0,d.T)({id:"ideaCatalog.builderProfile.frontendDev",message:"Web / Mobile Dev"}),[f]:(0,d.T)({id:"ideaCatalog.builderProfile.contractDev",message:"Smart Contract Dev"}),[v]:(0,d.T)({id:"ideaCatalog.builderProfile.fullStack",message:"Full-Stack"}),[w]:(0,d.T)({id:"ideaCatalog.builderProfile.protocolDev",message:"Protocol / Cryptography"})},Q={[K]:(0,d.T)({id:"ideaCatalog.securityCriticality.low",message:"Low"}),[L]:(0,d.T)({id:"ideaCatalog.securityCriticality.medium",message:"Medium"}),[F]:(0,d.T)({id:"ideaCatalog.securityCriticality.high",message:"High"}),[G]:(0,d.T)({id:"ideaCatalog.securityCriticality.critical",message:"Critical"})},Z={[H]:(0,d.T)({id:"ideaCatalog.opsBurden.low",message:"Low"}),[I]:(0,d.T)({id:"ideaCatalog.opsBurden.medium",message:"Medium"}),[O]:(0,d.T)({id:"ideaCatalog.opsBurden.high",message:"High"}),[W]:(0,d.T)({id:"ideaCatalog.opsBurden.veryHigh",message:"Very High"})},ee={[b]:"var(--status-green)",[C]:"var(--status-blue)",[T]:"var(--status-orange)",[k]:"var(--status-pink)"},ae={[n]:"var(--status-purple)",[l]:"var(--status-green)",[c]:"var(--status-blue)",[u]:"var(--status-orange)",[g]:"var(--status-yellow)"},ie={[m]:"var(--status-blue)",[p]:"var(--status-purple)",[h]:"var(--status-green)"},te=[{id:"karma-gated-access",title:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.title",message:"Karma-Gated Content Feed"}),category:n,superpowers:[p],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.what",message:"A social feed where creators publish posts visible only to followers who meet a minimum Karma tier \u2014 think Substack meets on-chain reputation"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.whyStatus",message:"Karma tiers are resolved on-chain, so access control is trustless \u2014 no subscription billing, no platform lock-in, and Sybil-resistant by design"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.mvp",message:"Feed with public + gated posts, tier-check middleware (possibly on-chain), creator dashboard showing audience breakdown by Karma tier"}),difficulty:b,userSegment:S,domainExpertise:N,capitalRequirement:R,securityCriticality:L,opsBurden:H},{id:"karma-liquidity-protocol",title:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.title",message:"Karma-Boosted Yield Vault"}),category:n,superpowers:[p],builderProfiles:[f],what:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.what",message:"A DeFi vault where depositors with higher Karma tiers receive boosted APY \u2014 early supporters and active participants earn better returns"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.whyStatus",message:"The native reputation graph lets the vault weight rewards by proven participation instead of token-weighted voting or off-chain allowlists"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.mvp",message:"Single-asset vault with two yield tiers, on-chain Karma tier lookup at deposit, and a dashboard showing effective APY per tier"}),difficulty:T,userSegment:j,domainExpertise:M,capitalRequirement:A,securityCriticality:F,opsBurden:I},{id:"karma-incentive-market",title:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.title",message:"Karma Bounty Board"}),category:n,superpowers:[p],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.what",message:"A bounty marketplace where only users above a Karma threshold can claim tasks \u2014 project teams post work (bug reports, translations, onboarding guides) and pay verified contributors"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.whyStatus",message:"Karma-gating filters out spamming bots and low-effort submissions, giving bounty issuers confidence that claimants have a real track record on the network"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.mvp",message:"Bounty listing page, Karma-gated claim flow, submission review panel, and on-chain payout on approval"}),difficulty:C,userSegment:S,domainExpertise:N,capitalRequirement:B,securityCriticality:L,opsBurden:I},{id:"karma-dynamic-pricing",title:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.title",message:"Karma-Tiered NFT Marketplace"}),category:n,superpowers:[p],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.what",message:"An NFT marketplace where listing fees, royalties, and early-access windows adjust based on the buyer's and seller's Karma tier \u2014 trusted participants get better terms automatically"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.whyStatus",message:"On-chain tier resolution at checkout means dynamic pricing is enforced trustlessly \u2014 no coupon codes, no backend allowlists"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.mvp",message:"NFT listing + purchase flow with tiered fee schedule, on-chain tier check at checkout, and seller analytics showing sales by buyer tier"}),difficulty:b,userSegment:S,domainExpertise:q,capitalRequirement:R,securityCriticality:L,opsBurden:H},{id:"stealth-address-payments",title:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.title",message:"Stealth Address Payments"}),category:l,superpowers:[h,m],builderProfiles:[w],what:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.what",message:"One-time receiving addresses with unlinkable spend paths"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.whyStatus",message:"Privacy primitives + low-friction transaction UX"}),mvp:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.mvp",message:"Address generation, receive flow, and private spend flow"}),difficulty:T,userSegment:x,domainExpertise:_,capitalRequirement:R,securityCriticality:G,opsBurden:H},{id:"private-payroll",title:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.title",message:"Private Payroll & Savings"}),category:l,superpowers:[h],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.what",message:"Salary and savings rails that do not expose balances and recipients"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.whyStatus",message:"Real-world demand requires privacy for payroll and savings, but current public ledgers do not meet the needs"}),mvp:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.mvp",message:"Employer payout batch + recipient claim + shielded vault"}),difficulty:C,userSegment:P,domainExpertise:E,capitalRequirement:B,securityCriticality:F,opsBurden:I},{id:"shielded-microtransactions",title:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.title",message:"Shielded Microtransactions / Card Layer"}),category:l,superpowers:[h,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.what",message:"Low-value payments and subscriptions with hidden amounts/participants"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.whyStatus",message:"Gasless interactions make frequent payments viable"}),mvp:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.mvp",message:"Private tip/subscription flow with recurring authorization"}),difficulty:T,userSegment:x,domainExpertise:E,capitalRequirement:B,securityCriticality:F,opsBurden:I},{id:"private-lending",title:(0,d.T)({id:"ideaCatalog.idea.privateLending.title",message:"Private Lending & Borrowing"}),category:l,superpowers:[h,p],builderProfiles:[f,w],what:(0,d.T)({id:"ideaCatalog.idea.privateLending.what",message:"Borrow/lend flows that avoid public position leakage"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.privateLending.whyStatus",message:"Privacy + Karma-based trust signals"}),mvp:(0,d.T)({id:"ideaCatalog.idea.privateLending.mvp",message:"One collateral type, one borrow asset, private health checks"}),difficulty:k,userSegment:j,domainExpertise:M,capitalRequirement:D,securityCriticality:G,opsBurden:O},{id:"private-multisig",title:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.title",message:"Private Multisig"}),category:l,superpowers:[h],builderProfiles:[f,w],what:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.what",message:"Multisig ops where signers, threshold, and tx details are obscured"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.whyStatus",message:"Privacy-sensitive orgs can still operate on-chain"}),mvp:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.mvp",message:"Policy setup + signing flow + execution log with selective disclosure"}),difficulty:k,userSegment:P,domainExpertise:_,capitalRequirement:R,securityCriticality:G,opsBurden:I},{id:"social-mini-app",title:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.title",message:"Gasless Micro-Blogging Platform"}),category:c,superpowers:[p,m],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.what",message:"A Twitter-style micro-blog where every post, reply, and like is an on-chain action that costs the user nothing \u2014 with Karma badges that surface trusted voices"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.whyStatus",message:"Gasless transactions make post-per-action economics viable; Karma badges replace arbitrary blue-check systems with reputation earned through actual network participation"}),mvp:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.mvp",message:"Timeline feed, post/reply/like actions, user profiles with Karma trust badges, and basic content moderation controls"}),difficulty:b,userSegment:x,domainExpertise:q,capitalRequirement:R,securityCriticality:K,opsBurden:I},{id:"creator-economy-toolkit",title:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.title",message:"Fan Pass Platform"}),category:c,superpowers:[m],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.what",message:"A platform where creators mint free digital passes that unlock exclusive content, group chats, and IRL event access \u2014 fans collect passes gaslessly"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.whyStatus",message:"Zero-cost minting and claiming removes the paywall friction from community passes, letting creators grow audiences without asking fans to pay gas"}),mvp:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.mvp",message:"Creator page with pass minting, fan claim flow, pass-gated content section, and event check-in via pass verification"}),difficulty:C,userSegment:S,domainExpertise:q,capitalRequirement:R,securityCriticality:L,opsBurden:I},{id:"community-governance",title:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.title",message:"DAO Proposal & Karma-Weighted Voting App"}),category:c,superpowers:[p,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.what",message:"A governance app where community members submit proposals and vote with weight proportional to their Karma tier \u2014 active contributors have a louder voice than passive holders"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.whyStatus",message:"Karma-weighted voting rewards real participation over token accumulation, and gasless voting removes the cost barrier that suppresses turnout in most DAOs"}),mvp:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.mvp",message:"Proposal submission form, Karma-weighted voting with on-chain tallying, results dashboard with participation breakdown by tier"}),difficulty:C,userSegment:P,domainExpertise:N,capitalRequirement:R,securityCriticality:L,opsBurden:H},{id:"onchain-strategy-game",title:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.title",message:"Fog-of-War Conquest Game"}),category:u,superpowers:[h,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.what",message:"A hex-grid territory control game where troop positions are hidden via private state and every move is a gasless on-chain transaction \u2014 think Risk board game with real fog of war on-chain"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.whyStatus",message:"Privacy primitives enable genuine hidden information (not just client-side fog), while gasless moves make the rapid back-and-forth of strategy games economically feasible"}),mvp:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.mvp",message:"Hex map with fog-of-war, one unit type, private troop placement, turn resolution, and a match leaderboard"}),difficulty:T,userSegment:x,domainExpertise:q,capitalRequirement:R,securityCriticality:L,opsBurden:I},{id:"prediction-market",title:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.title",message:"Prediction Market"}),category:u,superpowers:[h,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.what",message:"Markets with low-friction entries and private participant positions."}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.whyStatus",message:"Better market participation and less copy-trading behavior."}),mvp:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.mvp",message:"Market creation + position entry + settlement + basic analytics."}),difficulty:T,userSegment:j,domainExpertise:M,capitalRequirement:A,securityCriticality:F,opsBurden:O},{id:"native-dex-companion",title:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.title",message:"Karma-Tiered Swap Router"}),category:g,superpowers:[p],builderProfiles:[f],what:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.what",message:"A swap interface that routes trades through the best on-chain pools and gives high-Karma users reduced fees and priority execution \u2014 a loyalty program baked into the DEX layer"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.whyStatus",message:"Karma tiers let the router offer fee discounts trustlessly, and tight integration with native liquidity means better rates without external aggregator dependencies"}),mvp:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.mvp",message:"Token swap UI with tiered fee display, Karma-aware routing logic, LP position panel, and trade history showing fees saved by tier"}),difficulty:C,userSegment:j,domainExpertise:M,capitalRequirement:A,securityCriticality:F,opsBurden:I},{id:"public-funding-interface",title:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.title",message:"Public Funding Interface"}),category:g,superpowers:[p,m],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.what",message:"End-to-end grant discovery, proposal, voting, and tracking dashboard"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.whyStatus",message:"Directly supports ecosystem growth flywheel"}),mvp:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.mvp",message:"Proposal board + vote screen + grant progress tracker"}),difficulty:C,userSegment:P,domainExpertise:N,capitalRequirement:R,securityCriticality:L,opsBurden:H}],se={categories:[],superpowers:[],builderProfiles:[],difficulties:[],userSegments:[],domainExpertises:[],capitalReqs:[]};function re({filters:e,onChange:a,totalCount:i,visibleCount:t}){const[r,n]=(0,o.useState)(!1),l=Object.values(e).some((e=>e.length>0));function c(i,t){const s=e[i],r=s.includes(t)?s.filter((e=>e!==t)):[...s,t];a({...e,[i]:r})}return(0,s.jsxs)("div",{className:"idea-catalog-filters",children:[(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.category",message:"Category"}),options:U,selected:e.categories,onToggle:e=>c("categories",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.statusPrimitives",message:"Status Primitives"}),options:z,selected:e.superpowers,onToggle:e=>c("superpowers",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.builderProfile",message:"Builder Profile"}),options:J,selected:e.builderProfiles,onToggle:e=>c("builderProfiles",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.difficulty",message:"Difficulty"}),options:V,selected:e.difficulties,onToggle:e=>c("difficulties",e)}),(0,s.jsx)("button",{type:"button",className:"idea-catalog-advanced-toggle",onClick:()=>n((e=>!e)),"aria-expanded":r,"aria-controls":"idea-catalog-advanced-filters",children:r?(0,d.T)({id:"ideaCatalog.filter.fewerFilters",message:"Fewer filters"}):(0,d.T)({id:"ideaCatalog.filter.moreFilters",message:"More filters"})}),r&&(0,s.jsxs)("div",{className:"idea-catalog-advanced",id:"idea-catalog-advanced-filters",children:[(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.domainExpertise",message:"Domain Expertise"}),options:X,selected:e.domainExpertises,onToggle:e=>c("domainExpertises",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.userSegment",message:"User Segment"}),options:$,selected:e.userSegments,onToggle:e=>c("userSegments",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.capitalRequirement",message:"Capital Requirement"}),options:Y,selected:e.capitalReqs,onToggle:e=>c("capitalReqs",e)})]}),(0,s.jsxs)("div",{className:"idea-catalog-status",children:[(0,s.jsx)("span",{children:(0,s.jsx)(d.A,{id:"ideaCatalog.status.showing",values:{visibleCount:t,totalCount:i},children:"Showing {visibleCount} of {totalCount} ideas"})}),l&&(0,s.jsx)("button",{type:"button",className:"idea-catalog-clear",onClick:()=>a(se),children:(0,s.jsx)(d.A,{id:"ideaCatalog.status.clearAll",children:"Clear all"})})]})]})}function oe({label:e,options:a,selected:i,onToggle:t}){return(0,s.jsxs)("div",{className:"idea-catalog-filter-group",role:"group","aria-label":e,children:[(0,s.jsx)("span",{className:"idea-catalog-filter-label",children:e}),(0,s.jsx)("div",{className:"idea-catalog-chips",children:Object.entries(a).map((([e,a])=>(0,s.jsx)("button",{type:"button",className:"idea-catalog-chip"+(i.includes(e)?" idea-catalog-chip--active":""),"aria-pressed":i.includes(e),onClick:()=>t(e),children:a},e)))})]})}function de({idea:e}){const[a,i]=(0,o.useState)(!1),t=`idea-card-detail-${e.id}`;return(0,s.jsxs)("div",{className:"idea-card"+(a?" idea-card--expanded":""),onClick:()=>i((e=>!e)),role:"button",tabIndex:0,"aria-expanded":a,"aria-controls":t,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),i((e=>!e)))},children:[(0,s.jsx)("div",{className:"idea-card__header",children:(0,s.jsx)("span",{className:"idea-card__category",style:{color:ae[e.category],background:`color-mix(in srgb, ${ae[e.category]} 12%, transparent)`},children:U[e.category]})}),(0,s.jsx)("h3",{className:"idea-card__title",children:e.title}),(0,s.jsx)("div",{className:"idea-card__superpowers",children:e.superpowers.map((e=>(0,s.jsx)("span",{className:"idea-card__superpower",style:{color:ie[e],background:`color-mix(in srgb, ${ie[e]} 10%, transparent)`},children:z[e]},e)))}),(0,s.jsx)("p",{className:"idea-card__what",children:e.what}),(0,s.jsx)("div",{className:"idea-card__badges",children:(0,s.jsx)("span",{className:"idea-card__badge",style:{color:ee[e.difficulty],background:`color-mix(in srgb, ${ee[e.difficulty]} 10%, transparent)`},children:V[e.difficulty]})}),(0,s.jsxs)("div",{className:"idea-card__tags",children:[e.builderProfiles.map((e=>(0,s.jsx)("span",{className:"idea-card__tag idea-card__tag--builder",children:J[e]},e))),(0,s.jsx)("span",{className:"idea-card__tag",children:X[e.domainExpertise]}),(0,s.jsx)("span",{className:"idea-card__tag idea-card__tag--segment",children:$[e.userSegment]})]}),(0,s.jsx)("span",{className:"idea-card__expand-icon",children:a?"\u25b2":"\u25bc"}),a&&(0,s.jsxs)("div",{className:"idea-card__detail",id:t,role:"region","aria-label":`${e.title} details`,children:[(0,s.jsxs)("div",{className:"idea-card__detail-section",children:[(0,s.jsx)("strong",{children:(0,d.T)({id:"ideaCatalog.card.whyStatus",message:"Why Status:"})})," ",e.whyStatus]}),(0,s.jsxs)("div",{className:"idea-card__detail-section",children:[(0,s.jsx)("strong",{children:(0,d.T)({id:"ideaCatalog.card.mvpScope",message:"MVP Scope:"})})," ",e.mvp]}),(0,s.jsxs)("div",{className:"idea-card__detail-meta",children:[(0,s.jsx)(ne,{label:(0,d.T)({id:"ideaCatalog.card.security",message:"Security"}),value:Q[e.securityCriticality]}),(0,s.jsx)(ne,{label:(0,d.T)({id:"ideaCatalog.card.opsBurden",message:"Ops Burden"}),value:Z[e.opsBurden]})]})]})]})}function ne({label:e,value:a}){return(0,s.jsxs)("span",{className:"idea-card__meta-badge",children:[(0,s.jsx)("span",{className:"idea-card__meta-label",children:e}),(0,s.jsx)("span",{className:"idea-card__meta-value",children:a})]})}function le(){const[e,a]=(0,o.useState)(se),i=(0,o.useMemo)((()=>te.filter((a=>function(e,a){return!(a.categories.length>0&&!a.categories.includes(e.category)||a.superpowers.length>0&&!a.superpowers.some((a=>e.superpowers.includes(a)))||a.builderProfiles.length>0&&!a.builderProfiles.some((a=>e.builderProfiles.includes(a)))||a.difficulties.length>0&&!a.difficulties.includes(e.difficulty)||a.userSegments.length>0&&!a.userSegments.includes(e.userSegment)||a.domainExpertises.length>0&&!a.domainExpertises.includes(e.domainExpertise)||a.capitalReqs.length>0&&!a.capitalReqs.includes(e.capitalRequirement))}(a,e)))),[e]);return(0,s.jsxs)("div",{className:"idea-catalog",children:[(0,s.jsx)(re,{filters:e,onChange:a,totalCount:te.length,visibleCount:i.length}),(0,s.jsx)("div",{className:"idea-catalog-grid",children:i.map((e=>(0,s.jsx)(de,{idea:e},e.id)))}),0===i.length&&(0,s.jsxs)("p",{className:"idea-catalog-empty",children:[(0,s.jsx)(d.A,{id:"ideaCatalog.empty.message",children:"No ideas match the current filters."})," ",(0,s.jsx)("button",{type:"button",className:"idea-catalog-clear",onClick:()=>a(se),children:(0,s.jsx)(d.A,{id:"ideaCatalog.empty.clearAll",children:"Clear all filters"})})]})]})}const ce={title:"What to Build: High-Leverage Ideas for Status Network",description:"Explore app ideas for Status Network: private DeFi, gasless social apps, and agentic markets. Leverage Karma reputation and RLN-based spam protection.",keywords:["Status Network","app ideas","builder ideas","Karma apps","privacy apps","gasless apps","DeFi","social apps","games","MVP"],sidebar_position:3},ue="What to Build on Status Network",ge={},me=[{value:"Start building now",id:"start-building-now",level:2},{value:"Ecosystem & Funding",id:"ecosystem--funding",level:2}];function pe(e){const a={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.header,{children:(0,s.jsx)(a.h1,{id:"what-to-build-on-status-network",children:"What to Build on Status Network"})}),"\n",(0,s.jsx)(a.p,{children:"Status Network combines gasless UX, Karma reputation, and privacy primitives.\nThis unlocks products that are hard to build well on any other chains."}),"\n",(0,s.jsx)(a.p,{children:"Below are some example products we think are a great fit for Status Network, though of course you\u2019re not limited to these ideas."}),"\n",(0,s.jsx)(a.p,{children:"Use the filters to find ideas aligned with your expertise and ambition. Click any card to see the full scope."}),"\n",(0,s.jsx)(le,{}),"\n",(0,s.jsx)(a.h2,{id:"start-building-now",children:"Start building now"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"/overview/introduction/quick-start",children:"Quick Start"})}),"\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"/build-for-karma/guides",children:"How to use Karma for gaslessness and reputation"})}),"\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"/build-for-karma/deploying-contracts",children:"Deploying Contracts on Status Network"})}),"\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})}),"\n"]}),"\n",(0,s.jsx)(a.h2,{id:"ecosystem--funding",children:"Ecosystem & Funding"}),"\n",(0,s.jsx)(a.p,{children:"Builders can earn continuous funding from the public funding pool governed by Karma holders.\nAs your app gains traction, you gain Karma and stronger influence over future allocations."}),"\n",(0,s.jsxs)(a.p,{children:["Learn more \u2192 ",(0,s.jsx)(a.a,{href:"/overview/tokenomics/public-funding",children:"Ecosystem & Funding"})]})]})}function he(e={}){const{wrapper:a}={...(0,r.R)(),...e.components};return a?(0,s.jsx)(a,{...e,children:(0,s.jsx)(pe,{...e})}):pe(e)}},8453:(e,a,i)=>{i.d(a,{R:()=>o,x:()=>d});var t=i(6540);const s={},r=t.createContext(s);function o(e){const a=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function d(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(r.Provider,{value:a},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/66fb3cbd.3713a5eb.js b/assets/js/66fb3cbd.3713a5eb.js deleted file mode 100644 index b806f50..0000000 --- a/assets/js/66fb3cbd.3713a5eb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9475],{3856:(e,a,i)=>{i.r(a),i.d(a,{assets:()=>ue,contentTitle:()=>ge,default:()=>he,frontMatter:()=>ce,metadata:()=>t,toc:()=>me});const t=JSON.parse('{"id":"build-for-karma/what-to-build","title":"What to Build on Status Network","description":"A scan-first catalog of high-leverage app ideas for Status Network, organized by category, effort, and delivery profile.","source":"@site/docs/build-for-karma/what-to-build.md","sourceDirName":"build-for-karma","slug":"/build-for-karma/what-to-build","permalink":"/build-for-karma/what-to-build","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/what-to-build.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"sidebarPosition":3,"frontMatter":{"title":"What to Build on Status Network","description":"A scan-first catalog of high-leverage app ideas for Status Network, organized by category, effort, and delivery profile.","keywords":["Status Network","app ideas","builder ideas","Karma apps","privacy apps","gasless apps","DeFi","social apps","games","MVP"],"sidebar_position":3},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83c\udf1f Why Status Network","permalink":"/build-for-karma/why-status-network"},"next":{"title":"Using Karma","permalink":"/build-for-karma/guides"}}');var s=i(4848),r=i(8453),o=i(6540),d=i(1312);const n="reputation",l="privacy",c="social",g="games",u="defi",m="gasless",p="reputation",h="privacy",y="frontend-dev",f="contract-dev",v="full-stack",w="protocol-dev",b="Low-Med",C="Med",T="Med-High",k="High",x="consumer",S="community-creator",P="dao-org-ops",j="trader-defi",N="community-design",M="defi-mechanisms",_="privacy",q="payments-finops",E="consumer-product",A="none",B="operating-treasury",R="seed-liquidity",D="deep-liquidity",K="Low",F="Medium",L="High",G="Critical",O="Low",H="Medium",I="High",U="Very High",W={[n]:(0,d.T)({id:"ideaCatalog.category.reputation",message:"Reputation"}),[l]:(0,d.T)({id:"ideaCatalog.category.privacy",message:"Privacy"}),[c]:(0,d.T)({id:"ideaCatalog.category.social",message:"Social"}),[g]:(0,d.T)({id:"ideaCatalog.category.games",message:"Games"}),[u]:(0,d.T)({id:"ideaCatalog.category.defi",message:"DeFi"})},V={[b]:(0,d.T)({id:"ideaCatalog.difficulty.lowMed",message:"Low-Med"}),[C]:(0,d.T)({id:"ideaCatalog.difficulty.med",message:"Med"}),[T]:(0,d.T)({id:"ideaCatalog.difficulty.medHigh",message:"Med-High"}),[k]:(0,d.T)({id:"ideaCatalog.difficulty.high",message:"High"})},$={[x]:(0,d.T)({id:"ideaCatalog.userSegment.consumer",message:"Consumer"}),[S]:(0,d.T)({id:"ideaCatalog.userSegment.communityCreator",message:"Community/Creator"}),[P]:(0,d.T)({id:"ideaCatalog.userSegment.daoOrgOps",message:"DAO/Org Ops"}),[j]:(0,d.T)({id:"ideaCatalog.userSegment.traderDefi",message:"Trader/DeFi"})},z={[N]:(0,d.T)({id:"ideaCatalog.domainExpertise.communityDesign",message:"Community Design"}),[M]:(0,d.T)({id:"ideaCatalog.domainExpertise.defiMechanisms",message:"DeFi Mechanisms"}),[_]:(0,d.T)({id:"ideaCatalog.domainExpertise.privacy",message:"Privacy"}),[q]:(0,d.T)({id:"ideaCatalog.domainExpertise.paymentsFinops",message:"Payments/FinOps"}),[E]:(0,d.T)({id:"ideaCatalog.domainExpertise.consumerProduct",message:"Consumer Product"})},X={[A]:(0,d.T)({id:"ideaCatalog.capitalReq.none",message:"None"}),[B]:(0,d.T)({id:"ideaCatalog.capitalReq.operatingTreasury",message:"Operating Treasury"}),[R]:(0,d.T)({id:"ideaCatalog.capitalReq.seedLiquidity",message:"Seed Liquidity"}),[D]:(0,d.T)({id:"ideaCatalog.capitalReq.deepLiquidity",message:"Deep Liquidity"})},Y={[m]:(0,d.T)({id:"ideaCatalog.statusPrimitive.gasless",message:"Gasless UX"}),[p]:(0,d.T)({id:"ideaCatalog.statusPrimitive.reputation",message:"Reputation"}),[h]:(0,d.T)({id:"ideaCatalog.statusPrimitive.privacy",message:"Privacy Primitives"})},J={[y]:(0,d.T)({id:"ideaCatalog.builderProfile.frontendDev",message:"Web / Mobile Dev"}),[f]:(0,d.T)({id:"ideaCatalog.builderProfile.contractDev",message:"Smart Contract Dev"}),[v]:(0,d.T)({id:"ideaCatalog.builderProfile.fullStack",message:"Full-Stack"}),[w]:(0,d.T)({id:"ideaCatalog.builderProfile.protocolDev",message:"Protocol / Cryptography"})},Q={[K]:(0,d.T)({id:"ideaCatalog.securityCriticality.low",message:"Low"}),[F]:(0,d.T)({id:"ideaCatalog.securityCriticality.medium",message:"Medium"}),[L]:(0,d.T)({id:"ideaCatalog.securityCriticality.high",message:"High"}),[G]:(0,d.T)({id:"ideaCatalog.securityCriticality.critical",message:"Critical"})},Z={[O]:(0,d.T)({id:"ideaCatalog.opsBurden.low",message:"Low"}),[H]:(0,d.T)({id:"ideaCatalog.opsBurden.medium",message:"Medium"}),[I]:(0,d.T)({id:"ideaCatalog.opsBurden.high",message:"High"}),[U]:(0,d.T)({id:"ideaCatalog.opsBurden.veryHigh",message:"Very High"})},ee={[b]:"var(--status-green)",[C]:"var(--status-blue)",[T]:"var(--status-orange)",[k]:"var(--status-pink)"},ae={[n]:"var(--status-purple)",[l]:"var(--status-green)",[c]:"var(--status-blue)",[g]:"var(--status-orange)",[u]:"var(--status-yellow)"},ie={[m]:"var(--status-blue)",[p]:"var(--status-purple)",[h]:"var(--status-green)"},te=[{id:"karma-gated-access",title:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.title",message:"Karma-Gated Content Feed"}),category:n,superpowers:[p],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.what",message:"A social feed where creators publish posts visible only to followers who meet a minimum Karma tier \u2014 think Substack meets on-chain reputation"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.whyStatus",message:"Karma tiers are resolved on-chain, so access control is trustless \u2014 no subscription billing, no platform lock-in, and Sybil-resistant by design"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaGatedAccess.mvp",message:"Feed with public + gated posts, tier-check middleware (possibly on-chain), creator dashboard showing audience breakdown by Karma tier"}),difficulty:b,userSegment:S,domainExpertise:N,capitalRequirement:A,securityCriticality:F,opsBurden:O},{id:"karma-liquidity-protocol",title:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.title",message:"Karma-Boosted Yield Vault"}),category:n,superpowers:[p],builderProfiles:[f],what:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.what",message:"A DeFi vault where depositors with higher Karma tiers receive boosted APY \u2014 early supporters and active participants earn better returns"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.whyStatus",message:"The native reputation graph lets the vault weight rewards by proven participation instead of token-weighted voting or off-chain allowlists"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaLiquidityProtocol.mvp",message:"Single-asset vault with two yield tiers, on-chain Karma tier lookup at deposit, and a dashboard showing effective APY per tier"}),difficulty:T,userSegment:j,domainExpertise:M,capitalRequirement:R,securityCriticality:L,opsBurden:H},{id:"karma-incentive-market",title:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.title",message:"Karma Bounty Board"}),category:n,superpowers:[p],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.what",message:"A bounty marketplace where only users above a Karma threshold can claim tasks \u2014 project teams post work (bug reports, translations, onboarding guides) and pay verified contributors"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.whyStatus",message:"Karma-gating filters out spamming bots and low-effort submissions, giving bounty issuers confidence that claimants have a real track record on the network"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaIncentiveMarket.mvp",message:"Bounty listing page, Karma-gated claim flow, submission review panel, and on-chain payout on approval"}),difficulty:C,userSegment:S,domainExpertise:N,capitalRequirement:B,securityCriticality:F,opsBurden:H},{id:"karma-dynamic-pricing",title:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.title",message:"Karma-Tiered NFT Marketplace"}),category:n,superpowers:[p],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.what",message:"An NFT marketplace where listing fees, royalties, and early-access windows adjust based on the buyer's and seller's Karma tier \u2014 trusted participants get better terms automatically"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.whyStatus",message:"On-chain tier resolution at checkout means dynamic pricing is enforced trustlessly \u2014 no coupon codes, no backend allowlists"}),mvp:(0,d.T)({id:"ideaCatalog.idea.karmaDynamicPricing.mvp",message:"NFT listing + purchase flow with tiered fee schedule, on-chain tier check at checkout, and seller analytics showing sales by buyer tier"}),difficulty:b,userSegment:S,domainExpertise:E,capitalRequirement:A,securityCriticality:F,opsBurden:O},{id:"stealth-address-payments",title:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.title",message:"Stealth Address Payments"}),category:l,superpowers:[h,m],builderProfiles:[w],what:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.what",message:"One-time receiving addresses with unlinkable spend paths"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.whyStatus",message:"Privacy primitives + low-friction transaction UX"}),mvp:(0,d.T)({id:"ideaCatalog.idea.stealthAddressPayments.mvp",message:"Address generation, receive flow, and private spend flow"}),difficulty:T,userSegment:x,domainExpertise:_,capitalRequirement:A,securityCriticality:G,opsBurden:O},{id:"private-payroll",title:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.title",message:"Private Payroll & Savings"}),category:l,superpowers:[h],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.what",message:"Salary and savings rails that do not expose balances and recipients"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.whyStatus",message:"Real-world demand requires privacy for payroll and savings, but current public ledgers do not meet the needs"}),mvp:(0,d.T)({id:"ideaCatalog.idea.privatePayroll.mvp",message:"Employer payout batch + recipient claim + shielded vault"}),difficulty:C,userSegment:P,domainExpertise:q,capitalRequirement:B,securityCriticality:L,opsBurden:H},{id:"shielded-microtransactions",title:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.title",message:"Shielded Microtransactions / Card Layer"}),category:l,superpowers:[h,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.what",message:"Low-value payments and subscriptions with hidden amounts/participants"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.whyStatus",message:"Gasless interactions make frequent payments viable"}),mvp:(0,d.T)({id:"ideaCatalog.idea.shieldedMicrotransactions.mvp",message:"Private tip/subscription flow with recurring authorization"}),difficulty:T,userSegment:x,domainExpertise:q,capitalRequirement:B,securityCriticality:L,opsBurden:H},{id:"private-lending",title:(0,d.T)({id:"ideaCatalog.idea.privateLending.title",message:"Private Lending & Borrowing"}),category:l,superpowers:[h,p],builderProfiles:[f,w],what:(0,d.T)({id:"ideaCatalog.idea.privateLending.what",message:"Borrow/lend flows that avoid public position leakage"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.privateLending.whyStatus",message:"Privacy + Karma-based trust signals"}),mvp:(0,d.T)({id:"ideaCatalog.idea.privateLending.mvp",message:"One collateral type, one borrow asset, private health checks"}),difficulty:k,userSegment:j,domainExpertise:M,capitalRequirement:D,securityCriticality:G,opsBurden:I},{id:"private-multisig",title:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.title",message:"Private Multisig"}),category:l,superpowers:[h],builderProfiles:[f,w],what:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.what",message:"Multisig ops where signers, threshold, and tx details are obscured"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.whyStatus",message:"Privacy-sensitive orgs can still operate on-chain"}),mvp:(0,d.T)({id:"ideaCatalog.idea.privateMultisig.mvp",message:"Policy setup + signing flow + execution log with selective disclosure"}),difficulty:k,userSegment:P,domainExpertise:_,capitalRequirement:A,securityCriticality:G,opsBurden:H},{id:"social-mini-app",title:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.title",message:"Gasless Micro-Blogging Platform"}),category:c,superpowers:[p,m],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.what",message:"A Twitter-style micro-blog where every post, reply, and like is an on-chain action that costs the user nothing \u2014 with Karma badges that surface trusted voices"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.whyStatus",message:"Gasless transactions make post-per-action economics viable; Karma badges replace arbitrary blue-check systems with reputation earned through actual network participation"}),mvp:(0,d.T)({id:"ideaCatalog.idea.socialMiniApp.mvp",message:"Timeline feed, post/reply/like actions, user profiles with Karma trust badges, and basic content moderation controls"}),difficulty:b,userSegment:x,domainExpertise:E,capitalRequirement:A,securityCriticality:K,opsBurden:H},{id:"creator-economy-toolkit",title:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.title",message:"Fan Pass Platform"}),category:c,superpowers:[m],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.what",message:"A platform where creators mint free digital passes that unlock exclusive content, group chats, and IRL event access \u2014 fans collect passes gaslessly"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.whyStatus",message:"Zero-cost minting and claiming removes the paywall friction from community passes, letting creators grow audiences without asking fans to pay gas"}),mvp:(0,d.T)({id:"ideaCatalog.idea.creatorEconomyToolkit.mvp",message:"Creator page with pass minting, fan claim flow, pass-gated content section, and event check-in via pass verification"}),difficulty:C,userSegment:S,domainExpertise:E,capitalRequirement:A,securityCriticality:F,opsBurden:H},{id:"community-governance",title:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.title",message:"DAO Proposal & Karma-Weighted Voting App"}),category:c,superpowers:[p,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.what",message:"A governance app where community members submit proposals and vote with weight proportional to their Karma tier \u2014 active contributors have a louder voice than passive holders"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.whyStatus",message:"Karma-weighted voting rewards real participation over token accumulation, and gasless voting removes the cost barrier that suppresses turnout in most DAOs"}),mvp:(0,d.T)({id:"ideaCatalog.idea.communityGovernance.mvp",message:"Proposal submission form, Karma-weighted voting with on-chain tallying, results dashboard with participation breakdown by tier"}),difficulty:C,userSegment:P,domainExpertise:N,capitalRequirement:A,securityCriticality:F,opsBurden:O},{id:"onchain-strategy-game",title:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.title",message:"Fog-of-War Conquest Game"}),category:g,superpowers:[h,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.what",message:"A hex-grid territory control game where troop positions are hidden via private state and every move is a gasless on-chain transaction \u2014 think Risk board game with real fog of war on-chain"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.whyStatus",message:"Privacy primitives enable genuine hidden information (not just client-side fog), while gasless moves make the rapid back-and-forth of strategy games economically feasible"}),mvp:(0,d.T)({id:"ideaCatalog.idea.onchainStrategyGame.mvp",message:"Hex map with fog-of-war, one unit type, private troop placement, turn resolution, and a match leaderboard"}),difficulty:T,userSegment:x,domainExpertise:E,capitalRequirement:A,securityCriticality:F,opsBurden:H},{id:"prediction-market",title:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.title",message:"Prediction Market"}),category:g,superpowers:[h,m],builderProfiles:[v],what:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.what",message:"Markets with low-friction entries and private participant positions."}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.whyStatus",message:"Better market participation and less copy-trading behavior."}),mvp:(0,d.T)({id:"ideaCatalog.idea.predictionMarket.mvp",message:"Market creation + position entry + settlement + basic analytics."}),difficulty:T,userSegment:j,domainExpertise:M,capitalRequirement:R,securityCriticality:L,opsBurden:I},{id:"native-dex-companion",title:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.title",message:"Karma-Tiered Swap Router"}),category:u,superpowers:[p],builderProfiles:[f],what:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.what",message:"A swap interface that routes trades through the best on-chain pools and gives high-Karma users reduced fees and priority execution \u2014 a loyalty program baked into the DEX layer"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.whyStatus",message:"Karma tiers let the router offer fee discounts trustlessly, and tight integration with native liquidity means better rates without external aggregator dependencies"}),mvp:(0,d.T)({id:"ideaCatalog.idea.nativeDexCompanion.mvp",message:"Token swap UI with tiered fee display, Karma-aware routing logic, LP position panel, and trade history showing fees saved by tier"}),difficulty:C,userSegment:j,domainExpertise:M,capitalRequirement:R,securityCriticality:L,opsBurden:H},{id:"public-funding-interface",title:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.title",message:"Public Funding Interface"}),category:u,superpowers:[p,m],builderProfiles:[y],what:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.what",message:"End-to-end grant discovery, proposal, voting, and tracking dashboard"}),whyStatus:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.whyStatus",message:"Directly supports ecosystem growth flywheel"}),mvp:(0,d.T)({id:"ideaCatalog.idea.publicFundingInterface.mvp",message:"Proposal board + vote screen + grant progress tracker"}),difficulty:C,userSegment:P,domainExpertise:N,capitalRequirement:A,securityCriticality:F,opsBurden:O}],se={categories:[],superpowers:[],builderProfiles:[],difficulties:[],userSegments:[],domainExpertises:[],capitalReqs:[]};function re({filters:e,onChange:a,totalCount:i,visibleCount:t}){const[r,n]=(0,o.useState)(!1),l=Object.values(e).some((e=>e.length>0));function c(i,t){const s=e[i],r=s.includes(t)?s.filter((e=>e!==t)):[...s,t];a({...e,[i]:r})}return(0,s.jsxs)("div",{className:"idea-catalog-filters",children:[(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.category",message:"Category"}),options:W,selected:e.categories,onToggle:e=>c("categories",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.statusPrimitives",message:"Status Primitives"}),options:Y,selected:e.superpowers,onToggle:e=>c("superpowers",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.builderProfile",message:"Builder Profile"}),options:J,selected:e.builderProfiles,onToggle:e=>c("builderProfiles",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.difficulty",message:"Difficulty"}),options:V,selected:e.difficulties,onToggle:e=>c("difficulties",e)}),(0,s.jsx)("button",{type:"button",className:"idea-catalog-advanced-toggle",onClick:()=>n((e=>!e)),"aria-expanded":r,"aria-controls":"idea-catalog-advanced-filters",children:r?(0,d.T)({id:"ideaCatalog.filter.fewerFilters",message:"Fewer filters"}):(0,d.T)({id:"ideaCatalog.filter.moreFilters",message:"More filters"})}),r&&(0,s.jsxs)("div",{className:"idea-catalog-advanced",id:"idea-catalog-advanced-filters",children:[(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.domainExpertise",message:"Domain Expertise"}),options:z,selected:e.domainExpertises,onToggle:e=>c("domainExpertises",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.userSegment",message:"User Segment"}),options:$,selected:e.userSegments,onToggle:e=>c("userSegments",e)}),(0,s.jsx)(oe,{label:(0,d.T)({id:"ideaCatalog.filter.capitalRequirement",message:"Capital Requirement"}),options:X,selected:e.capitalReqs,onToggle:e=>c("capitalReqs",e)})]}),(0,s.jsxs)("div",{className:"idea-catalog-status",children:[(0,s.jsx)("span",{children:(0,s.jsx)(d.A,{id:"ideaCatalog.status.showing",values:{visibleCount:t,totalCount:i},children:"Showing {visibleCount} of {totalCount} ideas"})}),l&&(0,s.jsx)("button",{type:"button",className:"idea-catalog-clear",onClick:()=>a(se),children:(0,s.jsx)(d.A,{id:"ideaCatalog.status.clearAll",children:"Clear all"})})]})]})}function oe({label:e,options:a,selected:i,onToggle:t}){return(0,s.jsxs)("div",{className:"idea-catalog-filter-group",role:"group","aria-label":e,children:[(0,s.jsx)("span",{className:"idea-catalog-filter-label",children:e}),(0,s.jsx)("div",{className:"idea-catalog-chips",children:Object.entries(a).map((([e,a])=>(0,s.jsx)("button",{type:"button",className:"idea-catalog-chip"+(i.includes(e)?" idea-catalog-chip--active":""),"aria-pressed":i.includes(e),onClick:()=>t(e),children:a},e)))})]})}function de({idea:e}){const[a,i]=(0,o.useState)(!1),t=`idea-card-detail-${e.id}`;return(0,s.jsxs)("div",{className:"idea-card"+(a?" idea-card--expanded":""),onClick:()=>i((e=>!e)),role:"button",tabIndex:0,"aria-expanded":a,"aria-controls":t,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),i((e=>!e)))},children:[(0,s.jsx)("div",{className:"idea-card__header",children:(0,s.jsx)("span",{className:"idea-card__category",style:{color:ae[e.category],background:`color-mix(in srgb, ${ae[e.category]} 12%, transparent)`},children:W[e.category]})}),(0,s.jsx)("h3",{className:"idea-card__title",children:e.title}),(0,s.jsx)("div",{className:"idea-card__superpowers",children:e.superpowers.map((e=>(0,s.jsx)("span",{className:"idea-card__superpower",style:{color:ie[e],background:`color-mix(in srgb, ${ie[e]} 10%, transparent)`},children:Y[e]},e)))}),(0,s.jsx)("p",{className:"idea-card__what",children:e.what}),(0,s.jsx)("div",{className:"idea-card__badges",children:(0,s.jsx)("span",{className:"idea-card__badge",style:{color:ee[e.difficulty],background:`color-mix(in srgb, ${ee[e.difficulty]} 10%, transparent)`},children:V[e.difficulty]})}),(0,s.jsxs)("div",{className:"idea-card__tags",children:[e.builderProfiles.map((e=>(0,s.jsx)("span",{className:"idea-card__tag idea-card__tag--builder",children:J[e]},e))),(0,s.jsx)("span",{className:"idea-card__tag",children:z[e.domainExpertise]}),(0,s.jsx)("span",{className:"idea-card__tag idea-card__tag--segment",children:$[e.userSegment]})]}),(0,s.jsx)("span",{className:"idea-card__expand-icon",children:a?"\u25b2":"\u25bc"}),a&&(0,s.jsxs)("div",{className:"idea-card__detail",id:t,role:"region","aria-label":`${e.title} details`,children:[(0,s.jsxs)("div",{className:"idea-card__detail-section",children:[(0,s.jsx)("strong",{children:(0,d.T)({id:"ideaCatalog.card.whyStatus",message:"Why Status:"})})," ",e.whyStatus]}),(0,s.jsxs)("div",{className:"idea-card__detail-section",children:[(0,s.jsx)("strong",{children:(0,d.T)({id:"ideaCatalog.card.mvpScope",message:"MVP Scope:"})})," ",e.mvp]}),(0,s.jsxs)("div",{className:"idea-card__detail-meta",children:[(0,s.jsx)(ne,{label:(0,d.T)({id:"ideaCatalog.card.security",message:"Security"}),value:Q[e.securityCriticality]}),(0,s.jsx)(ne,{label:(0,d.T)({id:"ideaCatalog.card.opsBurden",message:"Ops Burden"}),value:Z[e.opsBurden]})]})]})]})}function ne({label:e,value:a}){return(0,s.jsxs)("span",{className:"idea-card__meta-badge",children:[(0,s.jsx)("span",{className:"idea-card__meta-label",children:e}),(0,s.jsx)("span",{className:"idea-card__meta-value",children:a})]})}function le(){const[e,a]=(0,o.useState)(se),i=(0,o.useMemo)((()=>te.filter((a=>function(e,a){return!(a.categories.length>0&&!a.categories.includes(e.category)||a.superpowers.length>0&&!a.superpowers.some((a=>e.superpowers.includes(a)))||a.builderProfiles.length>0&&!a.builderProfiles.some((a=>e.builderProfiles.includes(a)))||a.difficulties.length>0&&!a.difficulties.includes(e.difficulty)||a.userSegments.length>0&&!a.userSegments.includes(e.userSegment)||a.domainExpertises.length>0&&!a.domainExpertises.includes(e.domainExpertise)||a.capitalReqs.length>0&&!a.capitalReqs.includes(e.capitalRequirement))}(a,e)))),[e]);return(0,s.jsxs)("div",{className:"idea-catalog",children:[(0,s.jsx)(re,{filters:e,onChange:a,totalCount:te.length,visibleCount:i.length}),(0,s.jsx)("div",{className:"idea-catalog-grid",children:i.map((e=>(0,s.jsx)(de,{idea:e},e.id)))}),0===i.length&&(0,s.jsxs)("p",{className:"idea-catalog-empty",children:[(0,s.jsx)(d.A,{id:"ideaCatalog.empty.message",children:"No ideas match the current filters."})," ",(0,s.jsx)("button",{type:"button",className:"idea-catalog-clear",onClick:()=>a(se),children:(0,s.jsx)(d.A,{id:"ideaCatalog.empty.clearAll",children:"Clear all filters"})})]})]})}const ce={title:"What to Build on Status Network",description:"A scan-first catalog of high-leverage app ideas for Status Network, organized by category, effort, and delivery profile.",keywords:["Status Network","app ideas","builder ideas","Karma apps","privacy apps","gasless apps","DeFi","social apps","games","MVP"],sidebar_position:3},ge=void 0,ue={},me=[{value:"Start building now",id:"start-building-now",level:2},{value:"Ecosystem & Funding",id:"ecosystem--funding",level:2}];function pe(e){const a={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.p,{children:"Status Network combines gasless UX, Karma reputation, and privacy primitives.\nThis unlocks products that are hard to build well on any other chains."}),"\n",(0,s.jsx)(a.p,{children:"Below are some example products we think are a great fit for Status Network, though of course you\u2019re not limited to these ideas."}),"\n",(0,s.jsx)(a.p,{children:"Use the filters to find ideas aligned with your expertise and ambition. Click any card to see the full scope."}),"\n",(0,s.jsx)(le,{}),"\n",(0,s.jsx)(a.h2,{id:"start-building-now",children:"Start building now"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"/overview/introduction/quick-start",children:"Quick Start"})}),"\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"/build-for-karma/guides",children:"How to use Karma for gaslessness and reputation"})}),"\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"/build-for-karma/deploying-contracts",children:"Deploying Contracts on Status Network"})}),"\n",(0,s.jsx)(a.li,{children:(0,s.jsx)(a.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})}),"\n"]}),"\n",(0,s.jsx)(a.h2,{id:"ecosystem--funding",children:"Ecosystem & Funding"}),"\n",(0,s.jsx)(a.p,{children:"Builders can earn continuous funding from the public funding pool governed by Karma holders.\nAs your app gains traction, you gain Karma and stronger influence over future allocations."}),"\n",(0,s.jsxs)(a.p,{children:["Learn more \u2192 ",(0,s.jsx)(a.a,{href:"/overview/tokenomics/public-funding",children:"Ecosystem & Funding"})]})]})}function he(e={}){const{wrapper:a}={...(0,r.R)(),...e.components};return a?(0,s.jsx)(a,{...e,children:(0,s.jsx)(pe,{...e})}):pe(e)}},8453:(e,a,i)=>{i.d(a,{R:()=>o,x:()=>d});var t=i(6540);const s={},r=t.createContext(s);function o(e){const a=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function d(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(r.Provider,{value:a},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/70943038.33698f5f.js b/assets/js/70943038.33698f5f.js new file mode 100644 index 0000000..815d745 --- /dev/null +++ b/assets/js/70943038.33698f5f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7037],{5843:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>x,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"overview/general-info/add-status-network","title":"Add Status Network: MetaMask & Wallet Setup Guide","description":"Learn how to add Status Network to MetaMask and other wallets. Manual configuration steps for desktop and mobile to access our gasless L2 environment.","source":"@site/docs/overview/general-info/add-status-network.md","sourceDirName":"overview/general-info","slug":"/overview/general-info/add-status-network","permalink":"/overview/general-info/add-status-network","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/add-status-network.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Add Status Network: MetaMask & Wallet Setup Guide","description":"Learn how to add Status Network to MetaMask and other wallets. Manual configuration steps for desktop and mobile to access our gasless L2 environment.","keywords":["Status Network","MetaMask setup","add network","wallet configuration","RPC settings","Chain ID","blockchain network setup"]},"sidebar":"homeSidebar","previous":{"title":"\u26fd Gasless Transactions","permalink":"/overview/general-info/gasless-transactions"},"next":{"title":"\ud83e\ude99 Tokens","permalink":"/overview/general-info/contract-addresses/tokens"}}');var r=n(4848),o=n(8453),i=n(9227),l=n(5995);const a={title:"Add Status Network: MetaMask & Wallet Setup Guide",description:"Learn how to add Status Network to MetaMask and other wallets. Manual configuration steps for desktop and mobile to access our gasless L2 environment.",keywords:["Status Network","MetaMask setup","add network","wallet configuration","RPC settings","Chain ID","blockchain network setup"]},d="Add Status Network",c={},h=[{value:"Manual Configuration",id:"manual-configuration",level:2},{value:"Mobile Wallets",id:"mobile-wallets",level:2},{value:"Adding Status Network to MetaMask Mobile",id:"adding-status-network-to-metamask-mobile",level:3},{value:"Additional Information",id:"additional-information",level:2}];function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"add-status-network",children:"Add Status Network"})}),"\n",(0,r.jsxs)(t.p,{children:["This guide shows how to add the ",(0,r.jsx)(t.strong,{children:"Status Network"})," to your wallet."]}),"\n",(0,r.jsx)(t.p,{children:"You can add Status Network Testnet directly by clicking on the button below:"}),"\n",(0,r.jsx)(i.A,{}),"\n",(0,r.jsx)(t.h2,{id:"manual-configuration",children:"Manual Configuration"}),"\n",(0,r.jsxs)(t.p,{children:["To add ",(0,r.jsx)(t.strong,{children:"Status Network Testnet"})," as a custom network to MetaMask:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Open MetaMask"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Click on the MetaMask extension icon in your browser to open it."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Access the Network Settings"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Click on the network selection dropdown at the top of the MetaMask window."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Add a New Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Click on ",(0,r.jsx)(t.strong,{children:'"Add network"'}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["In the new window, click on ",(0,r.jsx)(t.strong,{children:'"Add a network manually"'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Enter Network Details"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Fill in the following information:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Value"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Network Name"})}),(0,r.jsx)(t.td,{children:"Status Network Testnet"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"RPC URL"})}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://public.sepolia.rpc.status.network",children:"https://public.sepolia.rpc.status.network"})," ",(0,r.jsx)(l.A,{text:"https://public.sepolia.rpc.status.network",ariaLabel:"Copy RPC endpoint"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Chain ID"})}),(0,r.jsx)(t.td,{children:"1660990954"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Currency Symbol"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"ETH"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Block Explorer URL"})}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"https://sepoliascan.status.network"})," ",(0,r.jsx)(l.A,{text:"https://sepoliascan.status.network",ariaLabel:"Copy block explorer URL"})]})]})]})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Save the Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:'"Save"'})," to add the Status Network Testnet to your MetaMask wallet."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"You should now be able to connect to the Status Network Testnet by selecting it from the network dropdown menu."}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"mobile-wallets",children:"Mobile Wallets"}),"\n",(0,r.jsx)(t.h3,{id:"adding-status-network-to-metamask-mobile",children:"Adding Status Network to MetaMask Mobile"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Open MetaMask Mobile App"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Launch the MetaMask app on your mobile device."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Access Settings"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Tap on the hamburger menu (three horizontal lines) in the top left corner."}),"\n",(0,r.jsxs)(t.li,{children:["Select ",(0,r.jsx)(t.strong,{children:'"Settings"'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Add a New Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Tap on ",(0,r.jsx)(t.strong,{children:'"Networks"'}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Tap on ",(0,r.jsx)(t.strong,{children:'"Add Network"'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Enter Network Details"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Input the same network details as mentioned above for Testnet."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Save the Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Tap ",(0,r.jsx)(t.strong,{children:'"Add"'})," to save the new network."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"additional-information",children:"Additional Information"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Official Links"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://status.network/",children:"Status Network Website"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://docs.status.network/",children:"Status Network Documentation"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Testnet Explorer"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Need Help?"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["If you encounter any issues, please join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})," for support."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.p,{children:"By following this guide, you've successfully added the Status Network to your MetaMask wallet!"})]})}function x(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},5995:(e,t,n)=>{n.d(t,{A:()=>o});var s=n(6540),r=n(4848);function o({text:e,ariaLabel:t}){const[n,o]=(0,s.useState)(!1);return(0,r.jsx)("button",{type:"button",className:"button button--sm button--secondary","aria-label":t||`Copy ${e}`,onClick:async()=>{try{if("undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}o(!0),window.setTimeout((()=>o(!1)),1500)}catch(t){console.error("Copy failed",t)}},title:n?"Copied!":"Copy to clipboard",style:{float:"right",marginLeft:"8px"},children:(0,r.jsx)("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center"},children:n?(0,r.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):(0,r.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,r.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2",stroke:"currentColor",strokeWidth:"2"}),(0,r.jsx)("path",{d:"M5 15H4C2.895 15 2 14.105 2 13V4C2 2.895 2.895 2 4 2H13C14.105 2 15 2.895 15 4V5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>l});var s=n(6540);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}},9227:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(4848);function r(){return(0,s.jsxs)("button",{className:"button button--primary",onClick:async()=>{if("undefined"!=typeof window&&window.ethereum)try{await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:"0x6300B5EA",chainName:"Status Network Testnet",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://public.sepolia.rpc.status.network"],blockExplorerUrls:["https://sepoliascan.status.network"]}]})}catch(e){console.error(e),alert("Failed to add the network to MetaMask. Please try again.")}else alert("MetaMask is not installed. Please install MetaMask first.")},children:[(0,s.jsx)("img",{src:"https://docs.status.network/img/metamask.svg",alt:"MetaMask Fox",style:{width:"20px",height:"20px",marginRight:"8px",verticalAlign:"middle"}}),"Add Status Network Testnet"]})}}}]); \ No newline at end of file diff --git a/assets/js/70943038.e1f5a54c.js b/assets/js/70943038.e1f5a54c.js deleted file mode 100644 index 5e41d8f..0000000 --- a/assets/js/70943038.e1f5a54c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7037],{5843:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>x,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"overview/general-info/add-status-network","title":"Add Status Network","description":"Step-by-step guide on how to add Status Network to MetaMask and other wallets. Learn how to configure network settings for both desktop and mobile wallets.","source":"@site/docs/overview/general-info/add-status-network.md","sourceDirName":"overview/general-info","slug":"/overview/general-info/add-status-network","permalink":"/overview/general-info/add-status-network","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/add-status-network.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Add Status Network","description":"Step-by-step guide on how to add Status Network to MetaMask and other wallets. Learn how to configure network settings for both desktop and mobile wallets.","keywords":["Status Network","MetaMask setup","add network","wallet configuration","RPC settings","Chain ID","blockchain network setup"]},"sidebar":"homeSidebar","previous":{"title":"\u26fd Gasless Transactions","permalink":"/overview/general-info/gasless-transactions"},"next":{"title":"\ud83e\ude99 Tokens","permalink":"/overview/general-info/contract-addresses/tokens"}}');var r=n(4848),o=n(8453),i=n(9227),l=n(5995);const a={title:"Add Status Network",description:"Step-by-step guide on how to add Status Network to MetaMask and other wallets. Learn how to configure network settings for both desktop and mobile wallets.",keywords:["Status Network","MetaMask setup","add network","wallet configuration","RPC settings","Chain ID","blockchain network setup"]},d=void 0,c={},h=[{value:"Manual Configuration",id:"manual-configuration",level:2},{value:"Mobile Wallets",id:"mobile-wallets",level:2},{value:"Adding Status Network to MetaMask Mobile",id:"adding-status-network-to-metamask-mobile",level:3},{value:"Additional Information",id:"additional-information",level:2}];function u(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:["This guide shows how to add the ",(0,r.jsx)(t.strong,{children:"Status Network"})," to your wallet."]}),"\n",(0,r.jsx)(t.p,{children:"You can add Status Network Testnet directly by clicking on the button below:"}),"\n",(0,r.jsx)(i.A,{}),"\n",(0,r.jsx)(t.h2,{id:"manual-configuration",children:"Manual Configuration"}),"\n",(0,r.jsxs)(t.p,{children:["To add ",(0,r.jsx)(t.strong,{children:"Status Network Testnet"})," as a custom network to MetaMask:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Open MetaMask"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Click on the MetaMask extension icon in your browser to open it."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Access the Network Settings"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Click on the network selection dropdown at the top of the MetaMask window."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Add a New Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Click on ",(0,r.jsx)(t.strong,{children:'"Add network"'}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["In the new window, click on ",(0,r.jsx)(t.strong,{children:'"Add a network manually"'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Enter Network Details"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Fill in the following information:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Value"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Network Name"})}),(0,r.jsx)(t.td,{children:"Status Network Testnet"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"RPC URL"})}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://public.sepolia.rpc.status.network",children:"https://public.sepolia.rpc.status.network"})," ",(0,r.jsx)(l.A,{text:"https://public.sepolia.rpc.status.network",ariaLabel:"Copy RPC endpoint"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Chain ID"})}),(0,r.jsx)(t.td,{children:"1660990954"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Currency Symbol"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"ETH"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Block Explorer URL"})}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"https://sepoliascan.status.network"})," ",(0,r.jsx)(l.A,{text:"https://sepoliascan.status.network",ariaLabel:"Copy block explorer URL"})]})]})]})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Save the Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:'"Save"'})," to add the Status Network Testnet to your MetaMask wallet."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"You should now be able to connect to the Status Network Testnet by selecting it from the network dropdown menu."}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"mobile-wallets",children:"Mobile Wallets"}),"\n",(0,r.jsx)(t.h3,{id:"adding-status-network-to-metamask-mobile",children:"Adding Status Network to MetaMask Mobile"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Open MetaMask Mobile App"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Launch the MetaMask app on your mobile device."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Access Settings"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Tap on the hamburger menu (three horizontal lines) in the top left corner."}),"\n",(0,r.jsxs)(t.li,{children:["Select ",(0,r.jsx)(t.strong,{children:'"Settings"'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Add a New Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Tap on ",(0,r.jsx)(t.strong,{children:'"Networks"'}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Tap on ",(0,r.jsx)(t.strong,{children:'"Add Network"'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Enter Network Details"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Input the same network details as mentioned above for Testnet."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Save the Network"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Tap ",(0,r.jsx)(t.strong,{children:'"Add"'})," to save the new network."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"additional-information",children:"Additional Information"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Official Links"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://status.network/",children:"Status Network Website"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://docs.status.network/",children:"Status Network Documentation"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Testnet Explorer"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Need Help?"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["If you encounter any issues, please join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})," for support."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.p,{children:"By following this guide, you've successfully added the Status Network to your MetaMask wallet!"})]})}function x(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},5995:(e,t,n)=>{n.d(t,{A:()=>o});var s=n(6540),r=n(4848);function o({text:e,ariaLabel:t}){const[n,o]=(0,s.useState)(!1);return(0,r.jsx)("button",{type:"button",className:"button button--sm button--secondary","aria-label":t||`Copy ${e}`,onClick:async()=>{try{if("undefined"!=typeof navigator&&navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}o(!0),window.setTimeout((()=>o(!1)),1500)}catch(t){console.error("Copy failed",t)}},title:n?"Copied!":"Copy to clipboard",style:{float:"right",marginLeft:"8px"},children:(0,r.jsx)("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center"},children:n?(0,r.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):(0,r.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,r.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2",stroke:"currentColor",strokeWidth:"2"}),(0,r.jsx)("path",{d:"M5 15H4C2.895 15 2 14.105 2 13V4C2 2.895 2.895 2 4 2H13C14.105 2 15 2.895 15 4V5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>l});var s=n(6540);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}},9227:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(4848);function r(){return(0,s.jsxs)("button",{className:"button button--primary",onClick:async()=>{if("undefined"!=typeof window&&window.ethereum)try{await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:"0x6300B5EA",chainName:"Status Network Testnet",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://public.sepolia.rpc.status.network"],blockExplorerUrls:["https://sepoliascan.status.network"]}]})}catch(e){console.error(e),alert("Failed to add the network to MetaMask. Please try again.")}else alert("MetaMask is not installed. Please install MetaMask first.")},children:[(0,s.jsx)("img",{src:"https://docs.status.network/img/metamask.svg",alt:"MetaMask Fox",style:{width:"20px",height:"20px",marginRight:"8px",verticalAlign:"middle"}}),"Add Status Network Testnet"]})}}}]); \ No newline at end of file diff --git a/assets/js/7bd8b57f.5a42dcb1.js b/assets/js/7bd8b57f.5a42dcb1.js deleted file mode 100644 index 772302c..0000000 --- a/assets/js/7bd8b57f.5a42dcb1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[6988],{6928:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"tools/core-infrastructure/bridge","title":"Status Network Testnet Bridge","description":"Complete guide to using the Status Network bridge for transferring tokens between Sepolia and Status Network testnet. Learn about supported tokens, bridging process, and monitoring transactions.","source":"@site/docs/tools/core-infrastructure/bridge.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/bridge","permalink":"/tools/core-infrastructure/bridge","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/bridge.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"Status Network Testnet Bridge","description":"Complete guide to using the Status Network bridge for transferring tokens between Sepolia and Status Network testnet. Learn about supported tokens, bridging process, and monitoring transactions.","keywords":["Status Network bridge","token bridge","cross-chain transfer","L1 L2 bridge","token bridging","Sepolia bridge"],"slug":"/tools/core-infrastructure/bridge"},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udce1 RPC Endpoints","permalink":"/tools/core-infrastructure/rpc-endpoints"},"next":{"title":"\ud83d\udeb0 Testnet Faucets","permalink":"/tools/core-infrastructure/testnet-faucets"}}');var n=r(4848),i=r(8453);const o={title:"Status Network Testnet Bridge",description:"Complete guide to using the Status Network bridge for transferring tokens between Sepolia and Status Network testnet. Learn about supported tokens, bridging process, and monitoring transactions.",keywords:["Status Network bridge","token bridge","cross-chain transfer","L1 L2 bridge","token bridging","Sepolia bridge"],slug:"/tools/core-infrastructure/bridge"},a=void 0,d={},l=[{value:"Bridge Contracts",id:"bridge-contracts",level:2},{value:"Layer 1 (Sepolia)",id:"layer-1-sepolia",level:3},{value:"Layer 2 (Status Network)",id:"layer-2-status-network",level:3},{value:"Features",id:"features",level:2},{value:"Supported Tokens",id:"supported-tokens",level:2},{value:"Using the Bridge",id:"using-the-bridge",level:2},{value:"Monitoring Bridge Transactions",id:"monitoring-bridge-transactions",level:2},{value:"Support",id:"support",level:2}];function c(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["The Status Network Testnet Bridge allows users to transfer tokens and pass messages between Sepolia (Layer 1) and Status Network testnet (Layer 2). The bridge interface is available at ",(0,n.jsx)(t.a,{href:"https://bridge.status.network",children:"bridge.status.network"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"bridge-contracts",children:"Bridge Contracts"}),"\n",(0,n.jsx)(t.h3,{id:"layer-1-sepolia",children:"Layer 1 (Sepolia)"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Token Bridge"}),": ",(0,n.jsx)(t.a,{href:"https://sepolia.etherscan.io/address/0x01b44C5Ea321f921D93476cf54Aa8460db17a548",children:(0,n.jsx)(t.code,{children:"0x01b44C5Ea321f921D93476cf54Aa8460db17a548"})})]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"layer-2-status-network",children:"Layer 2 (Status Network)"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Token Bridge"}),": ",(0,n.jsx)(t.a,{href:"https://sepoliascan.status.network/address/0xbC7f9571152a8e21942b2aEa4831a27f1149af19",children:(0,n.jsx)(t.code,{children:"0xbC7f9571152a8e21942b2aEa4831a27f1149af19"})})]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"features",children:"Features"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Token Bridging"}),": Transfer ERC-20 tokens between networks"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"ETH Bridging"}),": Bridge ETH between Sepolia and Status Network"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Transaction Tracking"}),": Monitor the status of your bridge transactions"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Gas Estimation"}),": See estimated gas costs before bridging"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"supported-tokens",children:"Supported Tokens"}),"\n",(0,n.jsxs)(t.p,{children:["For the most up-to-date list of supported tokens and their contract addresses, please refer to our ",(0,n.jsx)(t.a,{href:"https://github.com/status-im/status-network-token-list",children:"Token List Repository"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"using-the-bridge",children:"Using the Bridge"}),"\n",(0,n.jsxs)(t.p,{children:["For detailed instructions on how to use the bridge, including step-by-step guides and important security considerations, please refer to our ",(0,n.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridging Guide"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"monitoring-bridge-transactions",children:"Monitoring Bridge Transactions"}),"\n",(0,n.jsx)(t.p,{children:"You can monitor your bridge transactions using:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})," for L2 transactions"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://sepolia.etherscan.io",children:"Sepolia Etherscan"})," for L1 transactions"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,n.jsx)(t.p,{children:"If you encounter any issues while using the bridge:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Check our ",(0,n.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridging Guide"})," for common solutions"]}),"\n",(0,n.jsxs)(t.li,{children:["Join our ",(0,n.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for assistance"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>o,x:()=>a});var s=r(6540);const n={},i=s.createContext(n);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7bd8b57f.e77aad80.js b/assets/js/7bd8b57f.e77aad80.js new file mode 100644 index 0000000..9f3123a --- /dev/null +++ b/assets/js/7bd8b57f.e77aad80.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[6988],{6928:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"tools/core-infrastructure/bridge","title":"Testnet Bridge: Move Tokens to Status Network L2","description":"Official bridge guide for Status Network. Transfer ETH and tokens between Sepolia and our gasless L2 to start building with reputation-based access.","source":"@site/docs/tools/core-infrastructure/bridge.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/bridge","permalink":"/tools/core-infrastructure/bridge","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/bridge.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Testnet Bridge: Move Tokens to Status Network L2","description":"Official bridge guide for Status Network. Transfer ETH and tokens between Sepolia and our gasless L2 to start building with reputation-based access.","keywords":["Status Network bridge","token bridge","cross-chain transfer","L1 L2 bridge","token bridging","Sepolia bridge"],"slug":"/tools/core-infrastructure/bridge"},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udce1 RPC Endpoints","permalink":"/tools/core-infrastructure/rpc-endpoints"},"next":{"title":"\ud83d\udeb0 Testnet Faucets","permalink":"/tools/core-infrastructure/testnet-faucets"}}');var n=r(4848),i=r(8453);const o={title:"Testnet Bridge: Move Tokens to Status Network L2",description:"Official bridge guide for Status Network. Transfer ETH and tokens between Sepolia and our gasless L2 to start building with reputation-based access.",keywords:["Status Network bridge","token bridge","cross-chain transfer","L1 L2 bridge","token bridging","Sepolia bridge"],slug:"/tools/core-infrastructure/bridge"},a="Status Network Testnet Bridge",d={},l=[{value:"Bridge Contracts",id:"bridge-contracts",level:2},{value:"Layer 1 (Sepolia)",id:"layer-1-sepolia",level:3},{value:"Layer 2 (Status Network)",id:"layer-2-status-network",level:3},{value:"Features",id:"features",level:2},{value:"Supported Tokens",id:"supported-tokens",level:2},{value:"Using the Bridge",id:"using-the-bridge",level:2},{value:"Monitoring Bridge Transactions",id:"monitoring-bridge-transactions",level:2},{value:"Support",id:"support",level:2}];function c(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"status-network-testnet-bridge",children:"Status Network Testnet Bridge"})}),"\n",(0,n.jsxs)(t.p,{children:["The Status Network Testnet Bridge allows users to transfer tokens and pass messages between Sepolia (Layer 1) and Status Network testnet (Layer 2). The bridge interface is available at ",(0,n.jsx)(t.a,{href:"https://bridge.status.network",children:"bridge.status.network"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"bridge-contracts",children:"Bridge Contracts"}),"\n",(0,n.jsx)(t.h3,{id:"layer-1-sepolia",children:"Layer 1 (Sepolia)"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Token Bridge"}),": ",(0,n.jsx)(t.a,{href:"https://sepolia.etherscan.io/address/0x01b44C5Ea321f921D93476cf54Aa8460db17a548",children:(0,n.jsx)(t.code,{children:"0x01b44C5Ea321f921D93476cf54Aa8460db17a548"})})]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"layer-2-status-network",children:"Layer 2 (Status Network)"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Token Bridge"}),": ",(0,n.jsx)(t.a,{href:"https://sepoliascan.status.network/address/0xbC7f9571152a8e21942b2aEa4831a27f1149af19",children:(0,n.jsx)(t.code,{children:"0xbC7f9571152a8e21942b2aEa4831a27f1149af19"})})]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"features",children:"Features"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Token Bridging"}),": Transfer ERC-20 tokens between networks"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"ETH Bridging"}),": Bridge ETH between Sepolia and Status Network"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Transaction Tracking"}),": Monitor the status of your bridge transactions"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Gas Estimation"}),": See estimated gas costs before bridging"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"supported-tokens",children:"Supported Tokens"}),"\n",(0,n.jsxs)(t.p,{children:["For the most up-to-date list of supported tokens and their contract addresses, please refer to our ",(0,n.jsx)(t.a,{href:"https://github.com/status-im/status-network-token-list",children:"Token List Repository"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"using-the-bridge",children:"Using the Bridge"}),"\n",(0,n.jsxs)(t.p,{children:["For detailed instructions on how to use the bridge, including step-by-step guides and important security considerations, please refer to our ",(0,n.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridging Guide"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"monitoring-bridge-transactions",children:"Monitoring Bridge Transactions"}),"\n",(0,n.jsx)(t.p,{children:"You can monitor your bridge transactions using:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})," for L2 transactions"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://sepolia.etherscan.io",children:"Sepolia Etherscan"})," for L1 transactions"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,n.jsx)(t.p,{children:"If you encounter any issues while using the bridge:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Check our ",(0,n.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridging Guide"})," for common solutions"]}),"\n",(0,n.jsxs)(t.li,{children:["Join our ",(0,n.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for assistance"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>o,x:()=>a});var s=r(6540);const n={},i=s.createContext(n);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/83ea961b.7c93a6a6.js b/assets/js/83ea961b.7c93a6a6.js new file mode 100644 index 0000000..b19fa92 --- /dev/null +++ b/assets/js/83ea961b.7c93a6a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9594],{556:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>l,contentTitle:()=>t,default:()=>u,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"build-for-karma/why-status-network","title":"Why Build on Status: Gasless Execution for Humans & Bots","description":"The case for building on Status Network: predictable costs, zero-gas execution, and LVR reduction for bots through per-block liquidity rebalancing tools.","source":"@site/docs/build-for-karma/why-status-network.md","sourceDirName":"build-for-karma","slug":"/build-for-karma/why-status-network","permalink":"/build-for-karma/why-status-network","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/why-status-network.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":2,"frontMatter":{"title":"Why Build on Status: Gasless Execution for Humans & Bots","description":"The case for building on Status Network: predictable costs, zero-gas execution, and LVR reduction for bots through per-block liquidity rebalancing tools.","keywords":["Status Network","why build","L2 comparison","gasless","Karma","public funding","developer advantages","Linea zkEVM"],"sidebar_position":2},"sidebar":"buildForKarmaSidebar","previous":{"title":"Build for Karma: Developer Guides for the Gasless L2","permalink":"/build-for-karma"},"next":{"title":"\ud83d\udca1 What to Build","permalink":"/build-for-karma/what-to-build"}}');var a=i(4848),n=i(8453);const o={title:"Why Build on Status: Gasless Execution for Humans & Bots",description:"The case for building on Status Network: predictable costs, zero-gas execution, and LVR reduction for bots through per-block liquidity rebalancing tools.",keywords:["Status Network","why build","L2 comparison","gasless","Karma","public funding","developer advantages","Linea zkEVM"],sidebar_position:2},t="Why Build on Status Network",l={},c=[{value:"Sustainable Public Funding",id:"sustainable-public-funding",level:2},{value:"Gasless by Default",id:"gasless-by-default",level:2},{value:"Built-in Reputation with Karma",id:"built-in-reputation-with-karma",level:2},{value:"Privacy Focused Civil Goods",id:"privacy-focused-civil-goods",level:2},{value:"Full EVM Equivalence",id:"full-evm-equivalence",level:2}];function d(e){const s={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.header,{children:(0,a.jsx)(s.h1,{id:"why-build-on-status-network",children:"Why Build on Status Network"})}),"\n",(0,a.jsx)(s.p,{children:"There are dozens of L2s to choose from. Here's why Status Network is worth your attention."}),"\n",(0,a.jsxs)("div",{className:"comparison-grid",children:[(0,a.jsx)("a",{className:"comparison-row-link",href:"#sustainable-public-funding",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"Dev Funding"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Continuous revenue pool that scales with your app's traction"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"One-time grants you re-apply for every few months"})]})]})]})}),(0,a.jsx)("a",{className:"comparison-row-link",href:"#gasless-by-default",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"Gas for Users"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Free with Karma \u2014 no paymaster, no relayer, no account abstraction setup"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"Users pay gas, or devs run paymaster + relayer infrastructure"})]})]})]})}),(0,a.jsx)("a",{className:"comparison-row-link",href:"#built-in-reputation-with-karma",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"User Reputation"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Network-wide reputation system through Karma \u2014 spam resistance, trust signals, feature gating"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"None \u2014 build your own or integrate third-party solutions"})]})]})]})}),(0,a.jsx)("a",{className:"comparison-row-link",href:"#privacy-focused-civil-goods",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"Privacy"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Native ZK-based tooling \u2014 Rate Limiting Nullifiers and more"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"Third-party integrations"})]})]})]})})]}),"\n",(0,a.jsx)(s.h2,{id:"sustainable-public-funding",children:"Sustainable Public Funding"}),"\n",(0,a.jsx)(s.p,{children:"Status Network doesn't rely on one-time grants or foundation treasuries. Instead, it has a continuous public funding pool fed by:"}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Native yield"})," from bridged yield-bearing assets (initially ETH and stablecoins)"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"DEX fees"})," from the native decentralized exchange"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Premium gas fees"})," from deny-listed users"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Future native app fees"})," (lending, NFT, launchpad, etc.)"]}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["Read more \u2192 ",(0,a.jsx)(s.a,{href:"/overview/tokenomics/economic-model",children:"Economic Model"})]}),"\n",(0,a.jsx)(s.p,{children:"Karma holders vote on how this public funding pool is distributed to apps and builders. The more your app contributes to the network by generating activity and transaction volume, the more Karma you and your users earn, and the more influence you have over future allocations."}),"\n",(0,a.jsx)(s.p,{children:(0,a.jsx)(s.strong,{children:"What this means for builders:"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:"Not just a one-time grant you have to re-apply for every few months, but a recurring revenue stream"}),"\n",(0,a.jsx)(s.li,{children:"Funding scales with your app's traction \u2014 more users, more Karma, more incentives for you"}),"\n",(0,a.jsx)(s.li,{children:"Community-governed allocation, no foundation gatekeeping"}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["Read more \u2192 ",(0,a.jsx)(s.a,{href:"/overview/tokenomics/public-funding",children:"Public Funding"})]}),"\n",(0,a.jsx)(s.h2,{id:"gasless-by-default",children:"Gasless by Default"}),"\n",(0,a.jsx)(s.p,{children:'On most chains, "gasless" means setting up a paymaster, running a relayer, or integrating an account abstraction SDK. On Status Network, gasless is the default behavior.'}),"\n",(0,a.jsx)(s.p,{children:"Every address with a positive Karma balance gets a free transaction quota. No paymasters. No relayers. No special wallet configuration. Your app just works without gas fees for eligible users."}),"\n",(0,a.jsx)(s.p,{children:(0,a.jsx)(s.strong,{children:"What this means for builders:"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:'No UX friction from gas. Your onboarding funnel doesn\'t lose users at the "bridge some ETH for gas" step'}),"\n",(0,a.jsx)(s.li,{children:"No need to integrate ERC-4337, meta-transactions, or gas relay patterns"}),"\n",(0,a.jsx)(s.li,{children:"No infrastructure cost for sponsoring gas on behalf of users"}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["The gasless system is enforced at the sequencer level via ",(0,a.jsx)(s.a,{href:"/overview/general-info/gasless-transactions/#rln",children:"Rate Limiting Nullifiers (RLN)"}),", a zero-knowledge spam prevention mechanism."]}),"\n",(0,a.jsx)(s.h2,{id:"built-in-reputation-with-karma",children:"Built-in Reputation with Karma"}),"\n",(0,a.jsx)(s.p,{children:"Karma is a soulbound (non-transferable) token that every user earns through genuine network participation such as staking, bridging, providing liquidity, using apps, or paying premium gas. It cannot be bought or transferred."}),"\n",(0,a.jsx)(s.p,{children:(0,a.jsx)(s.strong,{children:"What this means for builders:"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Trust signal"}),": High-Karma users are verified active participants, not airdrop farmers or sybils"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Feature gating"}),": Builders could gate their features such as premium features, priority access, or better rates based on user Karma tiers"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Spam resistance"}),": The network itself is gating spams with RLN mechanism and Karma tiers directly control gasless transaction quotas, meaning high-Karma users are inherently less likely to spam"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"No cold start problem"}),": Your app benefits from reputation built network-wide in the ecosystem"]}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["Read more \u2192 ",(0,a.jsx)(s.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})]}),"\n",(0,a.jsx)(s.h2,{id:"privacy-focused-civil-goods",children:"Privacy Focused Civil Goods"}),"\n",(0,a.jsxs)(s.p,{children:["Status Network is built with technology from the ",(0,a.jsx)(s.a,{href:"https://free.technology",children:"Institute of Free Technology (IFT)"}),". Most notably, the gasless transaction system uses ",(0,a.jsx)(s.a,{href:"https://vac.dev/rln",children:"RLN (Rate Limiting Nullifiers)"}),", a zero-knowledge spam prevention mechanism developed by ",(0,a.jsx)(s.a,{href:"https://vac.dev",children:"Vac"}),", an IFT research division."]}),"\n",(0,a.jsx)(s.p,{children:"We align with IFT's vision in technology to build public goods to safegauard civil liberties in the digital age. Status Network will add on privacy focused modules leveraging our gaslessness."}),"\n",(0,a.jsx)(s.h2,{id:"full-evm-equivalence",children:"Full EVM Equivalence"}),"\n",(0,a.jsxs)(s.p,{children:["Status Network is built on the ",(0,a.jsx)(s.a,{href:"https://linea.build",children:"Linea zkEVM"})," stack. This means builders can:"]}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:"Deploy existing Solidity contracts without modification"}),"\n",(0,a.jsx)(s.li,{children:"Use standard Ethereum tooling like Hardhat, Foundry, ethers.js, viem, etc."}),"\n",(0,a.jsxs)(s.li,{children:["use standard JSON-RPC methods (except for some methods related to gas fee. Refer to ",(0,a.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})," for more information.)"]}),"\n",(0,a.jsx)(s.li,{children:"Zero-knowledge proof-based security inherited from Linea's rollup architecture"}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["No custom VM.\nNo rewriting your contracts or backends.\nWhile the developer experience is identical to Ethereum, there are minor ",(0,a.jsx)(s.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"execution-level differences"})," inherited from the Linea zkEVM stack (e.g., some opcodes return L2-specific values). These do not affect standard contract deployment or testing."]})]})}function u(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,a.jsx)(s,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},8453:(e,s,i)=>{i.d(s,{R:()=>o,x:()=>t});var r=i(6540);const a={},n=r.createContext(a);function o(e){const s=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(n.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/83ea961b.e4e25a5e.js b/assets/js/83ea961b.e4e25a5e.js deleted file mode 100644 index 2747bc1..0000000 --- a/assets/js/83ea961b.e4e25a5e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9594],{556:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>t,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"build-for-karma/why-status-network","title":"Why Build on Status Network","description":"The case for building on Status Network \u2014 gasless transactions, Karma reputation, sustainable public funding, and how it compares to other L2s.","source":"@site/docs/build-for-karma/why-status-network.md","sourceDirName":"build-for-karma","slug":"/build-for-karma/why-status-network","permalink":"/build-for-karma/why-status-network","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/why-status-network.md","tags":[],"version":"current","lastUpdatedAt":1774460236000,"sidebarPosition":2,"frontMatter":{"title":"Why Build on Status Network","description":"The case for building on Status Network \u2014 gasless transactions, Karma reputation, sustainable public funding, and how it compares to other L2s.","keywords":["Status Network","why build","L2 comparison","gasless","Karma","public funding","developer advantages","Linea zkEVM"],"sidebar_position":2},"sidebar":"buildForKarmaSidebar","previous":{"title":"Build for Karma","permalink":"/build-for-karma"},"next":{"title":"\ud83d\udca1 What to Build","permalink":"/build-for-karma/what-to-build"}}');var a=i(4848),n=i(8453);const t={title:"Why Build on Status Network",description:"The case for building on Status Network \u2014 gasless transactions, Karma reputation, sustainable public funding, and how it compares to other L2s.",keywords:["Status Network","why build","L2 comparison","gasless","Karma","public funding","developer advantages","Linea zkEVM"],sidebar_position:2},o=void 0,l={},c=[{value:"Sustainable Public Funding",id:"sustainable-public-funding",level:2},{value:"Gasless by Default",id:"gasless-by-default",level:2},{value:"Built-in Reputation with Karma",id:"built-in-reputation-with-karma",level:2},{value:"Privacy Focused Civil Goods",id:"privacy-focused-civil-goods",level:2},{value:"Full EVM Equivalence",id:"full-evm-equivalence",level:2}];function d(e){const s={a:"a",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.p,{children:"There are dozens of L2s to choose from. Here's why Status Network is worth your attention."}),"\n",(0,a.jsxs)("div",{className:"comparison-grid",children:[(0,a.jsx)("a",{className:"comparison-row-link",href:"#sustainable-public-funding",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"Dev Funding"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Continuous revenue pool that scales with your app's traction"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"One-time grants you re-apply for every few months"})]})]})]})}),(0,a.jsx)("a",{className:"comparison-row-link",href:"#gasless-by-default",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"Gas for Users"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Free with Karma \u2014 no paymaster, no relayer, no account abstraction setup"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"Users pay gas, or devs run paymaster + relayer infrastructure"})]})]})]})}),(0,a.jsx)("a",{className:"comparison-row-link",href:"#built-in-reputation-with-karma",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"User Reputation"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Network-wide reputation system through Karma \u2014 spam resistance, trust signals, feature gating"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"None \u2014 build your own or integrate third-party solutions"})]})]})]})}),(0,a.jsx)("a",{className:"comparison-row-link",href:"#privacy-focused-civil-goods",children:(0,a.jsxs)("div",{className:"comparison-row",children:[(0,a.jsx)("div",{className:"comparison-label",children:"Privacy"}),(0,a.jsxs)("div",{className:"comparison-cards",children:[(0,a.jsxs)("div",{className:"comparison-card comparison-card--us",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Status Network"}),(0,a.jsx)("p",{children:"Native ZK-based tooling \u2014 Rate Limiting Nullifiers and more"})]}),(0,a.jsxs)("div",{className:"comparison-card comparison-card--them",children:[(0,a.jsx)("div",{className:"comparison-card-heading",children:"Typical L2"}),(0,a.jsx)("p",{children:"Third-party integrations"})]})]})]})})]}),"\n",(0,a.jsx)(s.h2,{id:"sustainable-public-funding",children:"Sustainable Public Funding"}),"\n",(0,a.jsx)(s.p,{children:"Status Network doesn't rely on one-time grants or foundation treasuries. Instead, it has a continuous public funding pool fed by:"}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Native yield"})," from bridged yield-bearing assets (initially ETH and stablecoins)"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"DEX fees"})," from the native decentralized exchange"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Premium gas fees"})," from deny-listed users"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Future native app fees"})," (lending, NFT, launchpad, etc.)"]}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["Read more \u2192 ",(0,a.jsx)(s.a,{href:"/overview/tokenomics/economic-model",children:"Economic Model"})]}),"\n",(0,a.jsx)(s.p,{children:"Karma holders vote on how this public funding pool is distributed to apps and builders. The more your app contributes to the network by generating activity and transaction volume, the more Karma you and your users earn, and the more influence you have over future allocations."}),"\n",(0,a.jsx)(s.p,{children:(0,a.jsx)(s.strong,{children:"What this means for builders:"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:"Not just a one-time grant you have to re-apply for every few months, but a recurring revenue stream"}),"\n",(0,a.jsx)(s.li,{children:"Funding scales with your app's traction \u2014 more users, more Karma, more incentives for you"}),"\n",(0,a.jsx)(s.li,{children:"Community-governed allocation, no foundation gatekeeping"}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["Read more \u2192 ",(0,a.jsx)(s.a,{href:"/overview/tokenomics/public-funding",children:"Public Funding"})]}),"\n",(0,a.jsx)(s.h2,{id:"gasless-by-default",children:"Gasless by Default"}),"\n",(0,a.jsx)(s.p,{children:'On most chains, "gasless" means setting up a paymaster, running a relayer, or integrating an account abstraction SDK. On Status Network, gasless is the default behavior.'}),"\n",(0,a.jsx)(s.p,{children:"Every address with a positive Karma balance gets a free transaction quota. No paymasters. No relayers. No special wallet configuration. Your app just works without gas fees for eligible users."}),"\n",(0,a.jsx)(s.p,{children:(0,a.jsx)(s.strong,{children:"What this means for builders:"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:'No UX friction from gas. Your onboarding funnel doesn\'t lose users at the "bridge some ETH for gas" step'}),"\n",(0,a.jsx)(s.li,{children:"No need to integrate ERC-4337, meta-transactions, or gas relay patterns"}),"\n",(0,a.jsx)(s.li,{children:"No infrastructure cost for sponsoring gas on behalf of users"}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["The gasless system is enforced at the sequencer level via ",(0,a.jsx)(s.a,{href:"/overview/general-info/gasless-transactions/#rln",children:"Rate Limiting Nullifiers (RLN)"}),", a zero-knowledge spam prevention mechanism."]}),"\n",(0,a.jsx)(s.h2,{id:"built-in-reputation-with-karma",children:"Built-in Reputation with Karma"}),"\n",(0,a.jsx)(s.p,{children:"Karma is a soulbound (non-transferable) token that every user earns through genuine network participation such as staking, bridging, providing liquidity, using apps, or paying premium gas. It cannot be bought or transferred."}),"\n",(0,a.jsx)(s.p,{children:(0,a.jsx)(s.strong,{children:"What this means for builders:"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Trust signal"}),": High-Karma users are verified active participants, not airdrop farmers or sybils"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Feature gating"}),": Builders could gate their features such as premium features, priority access, or better rates based on user Karma tiers"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"Spam resistance"}),": The network itself is gating spams with RLN mechanism and Karma tiers directly control gasless transaction quotas, meaning high-Karma users are inherently less likely to spam"]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.strong,{children:"No cold start problem"}),": Your app benefits from reputation built network-wide in the ecosystem"]}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["Read more \u2192 ",(0,a.jsx)(s.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})]}),"\n",(0,a.jsx)(s.h2,{id:"privacy-focused-civil-goods",children:"Privacy Focused Civil Goods"}),"\n",(0,a.jsxs)(s.p,{children:["Status Network is built with technology from the ",(0,a.jsx)(s.a,{href:"https://free.technology",children:"Institute of Free Technology (IFT)"}),". Most notably, the gasless transaction system uses ",(0,a.jsx)(s.a,{href:"https://vac.dev/rln",children:"RLN (Rate Limiting Nullifiers)"}),", a zero-knowledge spam prevention mechanism developed by ",(0,a.jsx)(s.a,{href:"https://vac.dev",children:"Vac"}),", an IFT research division."]}),"\n",(0,a.jsx)(s.p,{children:"We align with IFT's vision in technology to build public goods to safegauard civil liberties in the digital age. Status Network will add on privacy focused modules leveraging our gaslessness."}),"\n",(0,a.jsx)(s.h2,{id:"full-evm-equivalence",children:"Full EVM Equivalence"}),"\n",(0,a.jsxs)(s.p,{children:["Status Network is built on the ",(0,a.jsx)(s.a,{href:"https://linea.build",children:"Linea zkEVM"})," stack. This means builders can:"]}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:"Deploy existing Solidity contracts without modification"}),"\n",(0,a.jsx)(s.li,{children:"Use standard Ethereum tooling like Hardhat, Foundry, ethers.js, viem, etc."}),"\n",(0,a.jsxs)(s.li,{children:["use standard JSON-RPC methods (except for some methods related to gas fee. Refer to ",(0,a.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})," for more information.)"]}),"\n",(0,a.jsx)(s.li,{children:"Zero-knowledge proof-based security inherited from Linea's rollup architecture"}),"\n"]}),"\n",(0,a.jsxs)(s.p,{children:["No custom VM.\nNo rewriting your contracts or backends.\nWhile the developer experience is identical to Ethereum, there are minor ",(0,a.jsx)(s.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"execution-level differences"})," inherited from the Linea zkEVM stack (e.g., some opcodes return L2-specific values). These do not affect standard contract deployment or testing."]})]})}function u(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,a.jsx)(s,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},8453:(e,s,i)=>{i.d(s,{R:()=>t,x:()=>o});var r=i(6540);const a={},n=r.createContext(a);function t(e){const s=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(n.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/96525a68.21dbe761.js b/assets/js/96525a68.21dbe761.js deleted file mode 100644 index 8b6909f..0000000 --- a/assets/js/96525a68.21dbe761.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2707],{8180:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"overview/tokenomics/pre-deposits","title":"Pre-Deposits","description":"Technical overview of Status Network\'s pre-deposit vault architecture, including Aragon-based vaults for SNT, LINEA, and ETH, and Generic Protocol integration for stablecoin deposits.","source":"@site/docs/overview/tokenomics/pre-deposits.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/pre-deposits","permalink":"/overview/tokenomics/pre-deposits","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/pre-deposits.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Pre-Deposits","description":"Technical overview of Status Network\'s pre-deposit vault architecture, including Aragon-based vaults for SNT, LINEA, and ETH, and Generic Protocol integration for stablecoin deposits.","keywords":["Status Network","pre-deposits","vaults","Aragon","Generic Protocol","Karma","GUSD","stablecoin","yield","ETH","SNT","LINEA","Lido","Morpho"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udc8e SNT Staking","permalink":"/overview/tokenomics/snt-staking"},"next":{"title":"\ud83c\udf10 Network Details","permalink":"/overview/general-info/network-details"}}');var r=s(4848),i=s(8453);const o={title:"Pre-Deposits",description:"Technical overview of Status Network's pre-deposit vault architecture, including Aragon-based vaults for SNT, LINEA, and ETH, and Generic Protocol integration for stablecoin deposits.",keywords:["Status Network","pre-deposits","vaults","Aragon","Generic Protocol","Karma","GUSD","stablecoin","yield","ETH","SNT","LINEA","Lido","Morpho"]},a=void 0,l={},d=[{value:"Aragon Vaults (SNT \xb7 LINEA \xb7 ETH)",id:"aragon-vaults-snt--linea--eth",level:2},{value:"Overview",id:"overview",level:3},{value:"Yield strategy (ETH)",id:"yield-strategy-eth",level:3},{value:"Deployed contracts",id:"deployed-contracts",level:3},{value:"Generic Protocol Vault (GUSD)",id:"generic-protocol-vault-gusd",level:2},{value:"Yield strategy (stablecoins)",id:"yield-strategy-stablecoins",level:3},{value:"DepositorHelper contract",id:"depositorhelper-contract",level:3},{value:"Deposit flow (GUSD)",id:"deposit-flow-gusd",level:3},{value:"Incentives and Karma",id:"incentives-and-karma",level:2},{value:"Security",id:"security",level:2},{value:"Risks and considerations",id:"risks-and-considerations",level:2},{value:"Further reading",id:"further-reading",level:2}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Status Network runs a pre-deposit campaign to bootstrap liquidity and early Karma distribution ahead of mainnet. Two distinct vault systems power the campaign:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Asset(s)"}),(0,r.jsx)(t.th,{children:"Vault provider"}),(0,r.jsx)(t.th,{children:"Receipt token"}),(0,r.jsx)(t.th,{children:"Network"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"SNT, LINEA, ETH"}),(0,r.jsx)(t.td,{children:"Aragon"}),(0,r.jsx)(t.td,{children:"Yes"}),(0,r.jsx)(t.td,{children:"Ethereum / Linea"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"USDT, USDC, USDS (\u2192GUSD)"}),(0,r.jsx)(t.td,{children:"Generic Protocol"}),(0,r.jsx)(t.td,{children:"No"}),(0,r.jsx)(t.td,{children:"Ethereum"})]})]})]}),"\n",(0,r.jsx)(t.p,{children:"This page explains the technical architecture behind each system."}),"\n",(0,r.jsx)(t.h2,{id:"aragon-vaults-snt--linea--eth",children:"Aragon Vaults (SNT \xb7 LINEA \xb7 ETH)"}),"\n",(0,r.jsx)(t.h3,{id:"overview",children:"Overview"}),"\n",(0,r.jsxs)(t.p,{children:["The SNT, LINEA, and ETH vaults are smart contracts developed by ",(0,r.jsx)(t.a,{href:"https://aragon.org/",children:"Aragon"})," specifically for Status Network. The source code is publicly available:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Repository: ",(0,r.jsx)(t.a,{href:"https://github.com/aragon/status-predeposit-vaults",children:"aragon/status-predeposit-vaults"})]}),"\n",(0,r.jsxs)(t.li,{children:["Core contract: ",(0,r.jsx)(t.a,{href:"https://github.com/aragon/status-predeposit-vaults/blob/development/src/PreDepositVault.sol",children:(0,r.jsx)(t.code,{children:"PreDepositVault.sol"})})]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Each vault is an implementation of ",(0,r.jsx)(t.a,{href:"https://ethereum.org/developers/docs/standards/tokens/erc-4626",children:"ERC-4626 interface"})," that:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsx)(t.li,{children:"Accepts deposits of a single underlying asset (SNT, LINEA, or WETH)."}),"\n",(0,r.jsxs)(t.li,{children:["Mints a ",(0,r.jsx)(t.strong,{children:"vault share token"})," (svSNT, svLINEA, or svWETH) upon deposit, representing the depositor's pro-rata claim."]}),"\n",(0,r.jsx)(t.li,{children:"Holds deposited assets until mainnet launch, at which point admin bridges them to Status Network L2."}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"yield-strategy-eth",children:"Yield strategy (ETH)"}),"\n",(0,r.jsxs)(t.p,{children:["Deposited ETH is staked via ",(0,r.jsx)(t.a,{href:"https://lido.fi/",children:"Lido"})," to earn staking yield. A portion of the generated yield seeds Status Network's native funding pool at launch."]}),"\n",(0,r.jsx)(t.h3,{id:"deployed-contracts",children:"Deployed contracts"}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"/overview/general-info/contract-addresses/pre-deposit",children:"Pre-Deposit Vault Contracts"})," for a full list of addresses and networks."]}),"\n",(0,r.jsx)(t.h2,{id:"generic-protocol-vault-gusd",children:"Generic Protocol Vault (GUSD)"}),"\n",(0,r.jsxs)(t.p,{children:["GUSD is a yield-generating meta-stablecoin fully backed by USDT, USDC, and USDS, built by ",(0,r.jsx)(t.a,{href:"https://docs.generic.money/",children:"Generic Protocol"}),". The GUSD infrastructure is maintained by Generic Protocol, and Status Network integrates with it via its ",(0,r.jsx)(t.strong,{children:"DepositorHelper"})," contract."]}),"\n",(0,r.jsx)(t.h3,{id:"yield-strategy-stablecoins",children:"Yield strategy (stablecoins)"}),"\n",(0,r.jsxs)(t.p,{children:["The GUSD vault implements a multi-layered yield strategy through ",(0,r.jsx)(t.a,{href:"https://steakhouse.financial/",children:"Steakhouse Financial"})," and ",(0,r.jsx)(t.a,{href:"https://morpho.org/",children:"Morpho"}),":"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Deposited stablecoins are routed to ",(0,r.jsx)(t.strong,{children:"Generic Protocol's asset-specific vaults"})," (e.g., ",(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0x4825eFF24F9B7b76EEAFA2ecc6A1D5dFCb3c1c3f",children:"USDC Vault"}),")."]}),"\n",(0,r.jsxs)(t.li,{children:["The vault allocates assets to ",(0,r.jsx)(t.strong,{children:"Steakhouse Financial MetaMorpho vaults"})," (e.g., ",(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB",children:"steakUSDC"}),")."]}),"\n",(0,r.jsxs)(t.li,{children:["Steakhouse vaults supply assets to ",(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb",children:(0,r.jsx)(t.strong,{children:"Morpho lending markets"})}),", earning lending yield."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"A portion of the generated yield will seed Status Network's native funding pool upon mainnet launch."}),"\n",(0,r.jsx)(t.admonition,{type:"note",children:(0,r.jsxs)(t.p,{children:["The GUSD vault does ",(0,r.jsx)(t.strong,{children:"not"})," issue a receipt token. Your deposit is recorded in Generic Protocol's contracts; you can verify your position by connecting your wallet on ",(0,r.jsx)(t.a,{href:"https://hub.status.network/pre-deposits",children:"Hub"})," or directly on-chain."]})}),"\n",(0,r.jsx)(t.h3,{id:"depositorhelper-contract",children:"DepositorHelper contract"}),"\n",(0,r.jsxs)(t.p,{children:["Status Network pre-deposit interacts with Generic Protocol through the DepositorHelper:\n",(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919",children:(0,r.jsx)(t.code,{children:"0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919"})})]}),"\n",(0,r.jsx)(t.h3,{id:"deposit-flow-gusd",children:"Deposit flow (GUSD)"}),"\n",(0,r.jsx)(t.p,{children:"When a user deposits USDC, USDT or USDS, the following on-chain operations occur:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Approve"})," the DepositorHelper to spend your stablecoin."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsxs)(t.strong,{children:["Call ",(0,r.jsx)(t.a,{href:"https://docs.generic.money/code-ref/protocol/periphery/GenericDepositor.sol/contract.GenericDepositor#depositandpredeposit",children:(0,r.jsx)(t.code,{children:"depositAndPredeposit"})})]})," on the DepositorHelper, specifying asset and amount."]}),"\n",(0,r.jsx)(t.li,{children:"The stablecoin is transferred to the DepositorHelper."}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0x8c307baDbd78bEa5A1cCF9677caa58e7A2172502",children:(0,r.jsx)(t.strong,{children:"GenericUnit"})})," shares are minted to the DepositorHelper, representing the depositor's claim on the underlying stablecoin."]}),"\n",(0,r.jsxs)(t.li,{children:["The DepositorHelper deposits the stablecoin into the corresponding ",(0,r.jsx)(t.strong,{children:"Generic Protocol asset vault"})," (",(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0x4825eFF24F9B7b76EEAFA2ecc6A1D5dFCb3c1c3f",children:"USDC Vault"}),", ",(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0xB8280955aE7b5207AF4CDbdCd775135Bd38157fE",children:"USDT Vault"}),", or ",(0,r.jsx)(t.a,{href:"https://etherscan.io/address/0x6133dA4Cd25773Ebd38542a8aCEF8F94cA89892A",children:"USDS Vault"}),")."]}),"\n",(0,r.jsxs)(t.li,{children:["The asset vault allocates to ",(0,r.jsx)(t.strong,{children:"Steakhouse Financial MetaMorpho vaults"}),", which supply assets to ",(0,r.jsx)(t.strong,{children:"Morpho lending markets"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["The ",(0,r.jsx)(t.strong,{children:"Bridge Coordinator L1"})," emits a ",(0,r.jsx)(t.code,{children:"Predeposited"})," event, recording the pre-deposit for Status Network mainnet."]}),"\n",(0,r.jsx)(t.li,{children:"At mainnet launch, your deposit entitles you to GUSD on Status Network plus Karma, SNT & LINEA incentives, Generic Protocol points and potential native app points."}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For a full overview of the Generic Protocol structure (GUSD tokenomics, bridging infrastructure, etc.), see ",(0,r.jsx)(t.a,{href:"https://docs.generic.money/",children:"Generic Protocol documentation"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"incentives-and-karma",children:"Incentives and Karma"}),"\n",(0,r.jsx)(t.p,{children:"Pre-depositors earn:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Karma"}),": non-transferable governance token; grants gasless throughput and voting power (details in ",(0,r.jsx)(t.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"}),")."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Liquid incentives"}),": 15M SNT and 20M LINEA tokens distributed across vaults."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Generic protocol points"})," for stablecoin depositors: Generic Protocol points to be used when Generic Protocol launches on Status Network Mainnet."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Native app points"}),": to be confirmed as natives apps unveil their tokenomics."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Allocation depends on:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Time in vault"}),"\n",(0,r.jsx)(t.li,{children:"Vault TVL"}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Initial Karma distribution at mainnet launch:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Vault"}),(0,r.jsx)(t.th,{children:"% of initial Karma"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"SNT"}),(0,r.jsx)(t.td,{children:"25%"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"LINEA"}),(0,r.jsx)(t.td,{children:"10%"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"ETH"}),(0,r.jsx)(t.td,{children:"20%"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GUSD"}),(0,r.jsx)(t.td,{children:"20%"})]})]})]}),"\n",(0,r.jsx)(t.p,{children:"Native apps receive 25% of the initial Karma at mainnet launch."}),"\n",(0,r.jsx)(t.h2,{id:"security",children:"Security"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Aragon vaults"}),": audited; report available in the ",(0,r.jsxs)(t.a,{href:"https://github.com/aragon/status-predeposit-vaults/tree/development/audit",children:["repo's ",(0,r.jsx)(t.code,{children:"audit/"})," folder"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Generic Protocol"}),": audited; refer to its ",(0,r.jsx)(t.a,{href:"https://docs.generic.money/resources/audits",children:"documentation"})," on its security disclosures and report details."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"risks-and-considerations",children:"Risks and considerations"}),"\n",(0,r.jsx)(t.p,{children:"Depositing into any vault involves smart contract risk, bridging risk, market risk, and protocol risk associated with any underlying yield strategy. Only deposit amounts you can afford to lock for the duration of the campaign."}),"\n",(0,r.jsxs)(t.p,{children:["Before participating, please read the ",(0,r.jsx)(t.a,{href:"https://status.network/legal/status-network-pre-deposit-disclaimer",children:"Status Network Pre-Deposit Disclaimer"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"This documentation is for informational purposes and does not constitute financial advice."}),"\n",(0,r.jsx)(t.h2,{id:"further-reading",children:"Further reading"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"/overview/general-info/contract-addresses/pre-deposit",children:"Pre-Deposit Vault Contracts"})," \u2014 deployed addresses information"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," \u2014 how Karma is earned and used"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"/overview/tokenomics/economic-model",children:"Economic Model"})," \u2014 Status Network's sustainable revenue model"]}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://docs.aragon.org/",children:"Aragon Documentation"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://docs.generic.money/",children:"Generic Protocol Documentation"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>a});var n=s(6540);const r={},i=n.createContext(r);function o(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/96525a68.938f8969.js b/assets/js/96525a68.938f8969.js new file mode 100644 index 0000000..2073d3c --- /dev/null +++ b/assets/js/96525a68.938f8969.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2707],{8180:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"overview/tokenomics/pre-deposits","title":"Pre-Deposits: Vault Architecture & Yield Strategies","description":"Technical overview of Status Network pre-deposit vaults. Earn Karma by bridging SNT, ETH, or stablecoins into Aragon-based yield-generating strategies.","source":"@site/docs/overview/tokenomics/pre-deposits.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/pre-deposits","permalink":"/overview/tokenomics/pre-deposits","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/pre-deposits.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Pre-Deposits: Vault Architecture & Yield Strategies","description":"Technical overview of Status Network pre-deposit vaults. Earn Karma by bridging SNT, ETH, or stablecoins into Aragon-based yield-generating strategies.","keywords":["Status Network","pre-deposits","vaults","Aragon","Generic Protocol","Karma","GUSD","stablecoin","yield","ETH","SNT","LINEA","Lido","Morpho"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udc8e SNT Staking","permalink":"/overview/tokenomics/snt-staking"},"next":{"title":"\ud83c\udf10 Network Details","permalink":"/overview/general-info/network-details"}}');var i=s(4848),n=s(8453);const o={title:"Pre-Deposits: Vault Architecture & Yield Strategies",description:"Technical overview of Status Network pre-deposit vaults. Earn Karma by bridging SNT, ETH, or stablecoins into Aragon-based yield-generating strategies.",keywords:["Status Network","pre-deposits","vaults","Aragon","Generic Protocol","Karma","GUSD","stablecoin","yield","ETH","SNT","LINEA","Lido","Morpho"]},a="Pre-Deposits",l={},d=[{value:"Aragon Vaults (SNT \xb7 LINEA \xb7 ETH)",id:"aragon-vaults-snt--linea--eth",level:2},{value:"Overview",id:"overview",level:3},{value:"Yield strategy (ETH)",id:"yield-strategy-eth",level:3},{value:"Deployed contracts",id:"deployed-contracts",level:3},{value:"Generic Protocol Vault (GUSD)",id:"generic-protocol-vault-gusd",level:2},{value:"Yield strategy (stablecoins)",id:"yield-strategy-stablecoins",level:3},{value:"DepositorHelper contract",id:"depositorhelper-contract",level:3},{value:"Deposit flow (GUSD)",id:"deposit-flow-gusd",level:3},{value:"Incentives and Karma",id:"incentives-and-karma",level:2},{value:"Security",id:"security",level:2},{value:"Risks and considerations",id:"risks-and-considerations",level:2},{value:"Further reading",id:"further-reading",level:2}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"pre-deposits",children:"Pre-Deposits"})}),"\n",(0,i.jsx)(t.p,{children:"Status Network runs a pre-deposit campaign to bootstrap liquidity and early Karma distribution ahead of mainnet. Two distinct vault systems power the campaign:"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Asset(s)"}),(0,i.jsx)(t.th,{children:"Vault provider"}),(0,i.jsx)(t.th,{children:"Receipt token"}),(0,i.jsx)(t.th,{children:"Network"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"SNT, LINEA, ETH"}),(0,i.jsx)(t.td,{children:"Aragon"}),(0,i.jsx)(t.td,{children:"Yes"}),(0,i.jsx)(t.td,{children:"Ethereum / Linea"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"USDT, USDC, USDS (\u2192GUSD)"}),(0,i.jsx)(t.td,{children:"Generic Protocol"}),(0,i.jsx)(t.td,{children:"No"}),(0,i.jsx)(t.td,{children:"Ethereum"})]})]})]}),"\n",(0,i.jsx)(t.p,{children:"This page explains the technical architecture behind each system."}),"\n",(0,i.jsx)(t.h2,{id:"aragon-vaults-snt--linea--eth",children:"Aragon Vaults (SNT \xb7 LINEA \xb7 ETH)"}),"\n",(0,i.jsx)(t.h3,{id:"overview",children:"Overview"}),"\n",(0,i.jsxs)(t.p,{children:["The SNT, LINEA, and ETH vaults are smart contracts developed by ",(0,i.jsx)(t.a,{href:"https://aragon.org/",children:"Aragon"})," specifically for Status Network. The source code is publicly available:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Repository: ",(0,i.jsx)(t.a,{href:"https://github.com/aragon/status-predeposit-vaults",children:"aragon/status-predeposit-vaults"})]}),"\n",(0,i.jsxs)(t.li,{children:["Core contract: ",(0,i.jsx)(t.a,{href:"https://github.com/aragon/status-predeposit-vaults/blob/development/src/PreDepositVault.sol",children:(0,i.jsx)(t.code,{children:"PreDepositVault.sol"})})]}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["Each vault is an implementation of ",(0,i.jsx)(t.a,{href:"https://ethereum.org/developers/docs/standards/tokens/erc-4626",children:"ERC-4626 interface"})," that:"]}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:"Accepts deposits of a single underlying asset (SNT, LINEA, or WETH)."}),"\n",(0,i.jsxs)(t.li,{children:["Mints a ",(0,i.jsx)(t.strong,{children:"vault share token"})," (svSNT, svLINEA, or svWETH) upon deposit, representing the depositor's pro-rata claim."]}),"\n",(0,i.jsx)(t.li,{children:"Holds deposited assets until mainnet launch, at which point admin bridges them to Status Network L2."}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"yield-strategy-eth",children:"Yield strategy (ETH)"}),"\n",(0,i.jsxs)(t.p,{children:["Deposited ETH is staked via ",(0,i.jsx)(t.a,{href:"https://lido.fi/",children:"Lido"})," to earn staking yield. A portion of the generated yield seeds Status Network's native funding pool at launch."]}),"\n",(0,i.jsx)(t.h3,{id:"deployed-contracts",children:"Deployed contracts"}),"\n",(0,i.jsxs)(t.p,{children:["See ",(0,i.jsx)(t.a,{href:"/overview/general-info/contract-addresses/pre-deposit",children:"Pre-Deposit Vault Contracts"})," for a full list of addresses and networks."]}),"\n",(0,i.jsx)(t.h2,{id:"generic-protocol-vault-gusd",children:"Generic Protocol Vault (GUSD)"}),"\n",(0,i.jsxs)(t.p,{children:["GUSD is a yield-generating meta-stablecoin fully backed by USDT, USDC, and USDS, built by ",(0,i.jsx)(t.a,{href:"https://docs.generic.money/",children:"Generic Protocol"}),". The GUSD infrastructure is maintained by Generic Protocol, and Status Network integrates with it via its ",(0,i.jsx)(t.strong,{children:"DepositorHelper"})," contract."]}),"\n",(0,i.jsx)(t.h3,{id:"yield-strategy-stablecoins",children:"Yield strategy (stablecoins)"}),"\n",(0,i.jsxs)(t.p,{children:["The GUSD vault implements a multi-layered yield strategy through ",(0,i.jsx)(t.a,{href:"https://steakhouse.financial/",children:"Steakhouse Financial"})," and ",(0,i.jsx)(t.a,{href:"https://morpho.org/",children:"Morpho"}),":"]}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Deposited stablecoins are routed to ",(0,i.jsx)(t.strong,{children:"Generic Protocol's asset-specific vaults"})," (e.g., ",(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0x4825eFF24F9B7b76EEAFA2ecc6A1D5dFCb3c1c3f",children:"USDC Vault"}),")."]}),"\n",(0,i.jsxs)(t.li,{children:["The vault allocates assets to ",(0,i.jsx)(t.strong,{children:"Steakhouse Financial MetaMorpho vaults"})," (e.g., ",(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB",children:"steakUSDC"}),")."]}),"\n",(0,i.jsxs)(t.li,{children:["Steakhouse vaults supply assets to ",(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb",children:(0,i.jsx)(t.strong,{children:"Morpho lending markets"})}),", earning lending yield."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"A portion of the generated yield will seed Status Network's native funding pool upon mainnet launch."}),"\n",(0,i.jsx)(t.admonition,{type:"note",children:(0,i.jsxs)(t.p,{children:["The GUSD vault does ",(0,i.jsx)(t.strong,{children:"not"})," issue a receipt token. Your deposit is recorded in Generic Protocol's contracts; you can verify your position by connecting your wallet on ",(0,i.jsx)(t.a,{href:"https://hub.status.network/pre-deposits",children:"Hub"})," or directly on-chain."]})}),"\n",(0,i.jsx)(t.h3,{id:"depositorhelper-contract",children:"DepositorHelper contract"}),"\n",(0,i.jsxs)(t.p,{children:["Status Network pre-deposit interacts with Generic Protocol through the DepositorHelper:\n",(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919",children:(0,i.jsx)(t.code,{children:"0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919"})})]}),"\n",(0,i.jsx)(t.h3,{id:"deposit-flow-gusd",children:"Deposit flow (GUSD)"}),"\n",(0,i.jsx)(t.p,{children:"When a user deposits USDC, USDT or USDS, the following on-chain operations occur:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Approve"})," the DepositorHelper to spend your stablecoin."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsxs)(t.strong,{children:["Call ",(0,i.jsx)(t.a,{href:"https://docs.generic.money/code-ref/protocol/periphery/GenericDepositor.sol/contract.GenericDepositor#depositandpredeposit",children:(0,i.jsx)(t.code,{children:"depositAndPredeposit"})})]})," on the DepositorHelper, specifying asset and amount."]}),"\n",(0,i.jsx)(t.li,{children:"The stablecoin is transferred to the DepositorHelper."}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0x8c307baDbd78bEa5A1cCF9677caa58e7A2172502",children:(0,i.jsx)(t.strong,{children:"GenericUnit"})})," shares are minted to the DepositorHelper, representing the depositor's claim on the underlying stablecoin."]}),"\n",(0,i.jsxs)(t.li,{children:["The DepositorHelper deposits the stablecoin into the corresponding ",(0,i.jsx)(t.strong,{children:"Generic Protocol asset vault"})," (",(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0x4825eFF24F9B7b76EEAFA2ecc6A1D5dFCb3c1c3f",children:"USDC Vault"}),", ",(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0xB8280955aE7b5207AF4CDbdCd775135Bd38157fE",children:"USDT Vault"}),", or ",(0,i.jsx)(t.a,{href:"https://etherscan.io/address/0x6133dA4Cd25773Ebd38542a8aCEF8F94cA89892A",children:"USDS Vault"}),")."]}),"\n",(0,i.jsxs)(t.li,{children:["The asset vault allocates to ",(0,i.jsx)(t.strong,{children:"Steakhouse Financial MetaMorpho vaults"}),", which supply assets to ",(0,i.jsx)(t.strong,{children:"Morpho lending markets"}),"."]}),"\n",(0,i.jsxs)(t.li,{children:["The ",(0,i.jsx)(t.strong,{children:"Bridge Coordinator L1"})," emits a ",(0,i.jsx)(t.code,{children:"Predeposited"})," event, recording the pre-deposit for Status Network mainnet."]}),"\n",(0,i.jsx)(t.li,{children:"At mainnet launch, your deposit entitles you to GUSD on Status Network plus Karma, SNT & LINEA incentives, Generic Protocol points and potential native app points."}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["For a full overview of the Generic Protocol structure (GUSD tokenomics, bridging infrastructure, etc.), see ",(0,i.jsx)(t.a,{href:"https://docs.generic.money/",children:"Generic Protocol documentation"}),"."]}),"\n",(0,i.jsx)(t.h2,{id:"incentives-and-karma",children:"Incentives and Karma"}),"\n",(0,i.jsx)(t.p,{children:"Pre-depositors earn:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Karma"}),": non-transferable governance token; grants gasless throughput and voting power (details in ",(0,i.jsx)(t.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"}),")."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Liquid incentives"}),": 15M SNT and 20M LINEA tokens distributed across vaults."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Generic protocol points"})," for stablecoin depositors: Generic Protocol points to be used when Generic Protocol launches on Status Network Mainnet."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Native app points"}),": to be confirmed as natives apps unveil their tokenomics."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Allocation depends on:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Time in vault"}),"\n",(0,i.jsx)(t.li,{children:"Vault TVL"}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Initial Karma distribution at mainnet launch:"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Vault"}),(0,i.jsx)(t.th,{children:"% of initial Karma"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"SNT"}),(0,i.jsx)(t.td,{children:"25%"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"LINEA"}),(0,i.jsx)(t.td,{children:"10%"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"ETH"}),(0,i.jsx)(t.td,{children:"20%"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"GUSD"}),(0,i.jsx)(t.td,{children:"20%"})]})]})]}),"\n",(0,i.jsx)(t.p,{children:"Native apps receive 25% of the initial Karma at mainnet launch."}),"\n",(0,i.jsx)(t.h2,{id:"security",children:"Security"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Aragon vaults"}),": audited; report available in the ",(0,i.jsxs)(t.a,{href:"https://github.com/aragon/status-predeposit-vaults/tree/development/audit",children:["repo's ",(0,i.jsx)(t.code,{children:"audit/"})," folder"]}),"."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Generic Protocol"}),": audited; refer to its ",(0,i.jsx)(t.a,{href:"https://docs.generic.money/resources/audits",children:"documentation"})," on its security disclosures and report details."]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"risks-and-considerations",children:"Risks and considerations"}),"\n",(0,i.jsx)(t.p,{children:"Depositing into any vault involves smart contract risk, bridging risk, market risk, and protocol risk associated with any underlying yield strategy. Only deposit amounts you can afford to lock for the duration of the campaign."}),"\n",(0,i.jsxs)(t.p,{children:["Before participating, please read the ",(0,i.jsx)(t.a,{href:"https://status.network/legal/status-network-pre-deposit-disclaimer",children:"Status Network Pre-Deposit Disclaimer"}),"."]}),"\n",(0,i.jsx)(t.p,{children:"This documentation is for informational purposes and does not constitute financial advice."}),"\n",(0,i.jsx)(t.h2,{id:"further-reading",children:"Further reading"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"/overview/general-info/contract-addresses/pre-deposit",children:"Pre-Deposit Vault Contracts"})," \u2014 deployed addresses information"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," \u2014 how Karma is earned and used"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"/overview/tokenomics/economic-model",children:"Economic Model"})," \u2014 Status Network's sustainable revenue model"]}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://docs.aragon.org/",children:"Aragon Documentation"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://docs.generic.money/",children:"Generic Protocol Documentation"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>a});var r=s(6540);const i={},n=r.createContext(i);function o(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/96f8b763.05af21f1.js b/assets/js/96f8b763.05af21f1.js deleted file mode 100644 index c15153c..0000000 --- a/assets/js/96f8b763.05af21f1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2372],{5402:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"tools/tools-index","title":"Tools & Infrastructure","description":"Developer tools, infrastructure services, and integrations available on Status Network \u2014 RPC endpoints, bridges, faucets, explorers, and partner integrations.","source":"@site/docs/tools/index.md","sourceDirName":"tools","slug":"/tools","permalink":"/tools","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/index.md","tags":[],"version":"current","lastUpdatedAt":1774460236000,"sidebarPosition":1,"frontMatter":{"id":"tools-index","title":"Tools & Infrastructure","description":"Developer tools, infrastructure services, and integrations available on Status Network \u2014 RPC endpoints, bridges, faucets, explorers, and partner integrations.","keywords":["Status Network","developer tools","RPC","bridge","faucet","block explorer","infrastructure"],"slug":"/tools","sidebar_position":1},"sidebar":"toolsSidebar","next":{"title":"\ud83d\udce1 RPC Endpoints","permalink":"/tools/core-infrastructure/rpc-endpoints"}}');var s=r(4848),i=r(8453);const o={id:"tools-index",title:"Tools & Infrastructure",description:"Developer tools, infrastructure services, and integrations available on Status Network \u2014 RPC endpoints, bridges, faucets, explorers, and partner integrations.",keywords:["Status Network","developer tools","RPC","bridge","faucet","block explorer","infrastructure"],slug:"/tools",sidebar_position:1},l=void 0,a={},c=[{value:"Core Infrastructure",id:"core-infrastructure",level:2},{value:"RPC",id:"rpc",level:2},{value:"Ethereum Compatibility",id:"ethereum-compatibility",level:2},{value:"Infrastructure Partners",id:"infrastructure-partners",level:2},{value:"Quick Links",id:"quick-links",level:2}];function d(e){const t={a:"a",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"A complete reference of developer tools, infrastructure services, and integrations available on Status Network."}),"\n",(0,s.jsx)(t.h2,{id:"core-infrastructure",children:"Core Infrastructure"}),"\n",(0,s.jsx)(t.p,{children:"Essential services for building and testing on Status Network:"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Tool"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.a,{href:"/tools/core-infrastructure/rpc-endpoints",children:(0,s.jsx)(t.strong,{children:"RPC Endpoints"})})}),(0,s.jsx)(t.td,{children:"Public JSON-RPC access and RPC documentation"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.a,{href:"/tools/core-infrastructure/bridge",children:(0,s.jsx)(t.strong,{children:"Bridge"})})}),(0,s.jsx)(t.td,{children:"Transfer assets between Ethereum Sepolia and Status Network"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:(0,s.jsx)(t.strong,{children:"Testnet Faucets"})})}),(0,s.jsx)(t.td,{children:"Get testnet assets for development"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.a,{href:"/tools/core-infrastructure/block-explorers",children:(0,s.jsx)(t.strong,{children:"Block Explorers"})})}),(0,s.jsx)(t.td,{children:"Browse transactions, contracts, and network activity"})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"rpc",children:"RPC"}),"\n",(0,s.jsx)(t.p,{children:"For RPC documentation including public endpoints, JSON-RPC API reference, and self-hosted node setup, start with:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/tools/core-infrastructure/rpc-endpoints",children:"RPC Endpoints"})," \u2014 public endpoint URL, setup examples, rate limits, and supported methods overview"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})," \u2014 method reference and Status Network-specific RPC behavior"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/tools/rpc/running-an-rpc",children:"Running an RPC Node"})," \u2014 self-hosted node setup and operations guidance"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"ethereum-compatibility",children:"Ethereum Compatibility"}),"\n",(0,s.jsx)(t.p,{children:"Status Network is built on the Linea zkEVM stack and is largely EVM-equivalent. For details on the specific differences from Ethereum mainnet \u2014 including opcodes, precompiles, and transaction types \u2014 see:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"Ethereum Differences"})," \u2014 comprehensive breakdown of execution-level differences"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"infrastructure-partners",children:"Infrastructure Partners"}),"\n",(0,s.jsxs)(t.p,{children:["Status Network is onboarding infrastructure partners across indexing, oracles, data providers, wallets, security, and more. See the full list of categories and how to use them on the ",(0,s.jsx)(t.a,{href:"/tools/infrastructure",children:"Infrastructure Partners"})," page."]}),"\n",(0,s.jsxs)(t.p,{children:["Want to become a partner? ",(0,s.jsx)(t.a,{href:"https://statusnetwork.typeform.com/partner",children:"Apply here"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"quick-links",children:"Quick Links"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})," \u2014 Chain ID, RPC URL, and full network configuration"]}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network to your wallet"})}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridging Guide"})," \u2014 Step-by-step bridge instructions"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>o,x:()=>l});var n=r(6540);const s={},i=n.createContext(s);function o(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/96f8b763.b44a428b.js b/assets/js/96f8b763.b44a428b.js new file mode 100644 index 0000000..b380d74 --- /dev/null +++ b/assets/js/96f8b763.b44a428b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2372],{5402:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"tools/tools-index","title":"Tools & Infrastructure: Build on the Gasless Network","description":"Developer tools for Status Network: RPC endpoints, bridges, and faucets. Build private, spam-resistant dApps using our native reputation-based execution.","source":"@site/docs/tools/index.md","sourceDirName":"tools","slug":"/tools","permalink":"/tools","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/index.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":1,"frontMatter":{"id":"tools-index","title":"Tools & Infrastructure: Build on the Gasless Network","description":"Developer tools for Status Network: RPC endpoints, bridges, and faucets. Build private, spam-resistant dApps using our native reputation-based execution.","keywords":["Status Network","developer tools","RPC","bridge","faucet","block explorer","infrastructure"],"slug":"/tools","sidebar_position":1},"sidebar":"toolsSidebar","next":{"title":"\ud83d\udce1 RPC Endpoints","permalink":"/tools/core-infrastructure/rpc-endpoints"}}');var n=r(4848),i=r(8453);const o={id:"tools-index",title:"Tools & Infrastructure: Build on the Gasless Network",description:"Developer tools for Status Network: RPC endpoints, bridges, and faucets. Build private, spam-resistant dApps using our native reputation-based execution.",keywords:["Status Network","developer tools","RPC","bridge","faucet","block explorer","infrastructure"],slug:"/tools",sidebar_position:1},l="Tools & Infrastructure",a={},d=[{value:"Core Infrastructure",id:"core-infrastructure",level:2},{value:"RPC",id:"rpc",level:2},{value:"Ethereum Compatibility",id:"ethereum-compatibility",level:2},{value:"Infrastructure Partners",id:"infrastructure-partners",level:2},{value:"Quick Links",id:"quick-links",level:2}];function c(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"tools--infrastructure",children:"Tools & Infrastructure"})}),"\n",(0,n.jsx)(t.p,{children:"A complete reference of developer tools, infrastructure services, and integrations available on Status Network."}),"\n",(0,n.jsx)(t.h2,{id:"core-infrastructure",children:"Core Infrastructure"}),"\n",(0,n.jsx)(t.p,{children:"Essential services for building and testing on Status Network:"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Tool"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"/tools/core-infrastructure/rpc-endpoints",children:(0,n.jsx)(t.strong,{children:"RPC Endpoints"})})}),(0,n.jsx)(t.td,{children:"Public JSON-RPC access and RPC documentation"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"/tools/core-infrastructure/bridge",children:(0,n.jsx)(t.strong,{children:"Bridge"})})}),(0,n.jsx)(t.td,{children:"Transfer assets between Ethereum Sepolia and Status Network"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:(0,n.jsx)(t.strong,{children:"Testnet Faucets"})})}),(0,n.jsx)(t.td,{children:"Get testnet assets for development"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.a,{href:"/tools/core-infrastructure/block-explorers",children:(0,n.jsx)(t.strong,{children:"Block Explorers"})})}),(0,n.jsx)(t.td,{children:"Browse transactions, contracts, and network activity"})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"rpc",children:"RPC"}),"\n",(0,n.jsx)(t.p,{children:"For RPC documentation including public endpoints, JSON-RPC API reference, and self-hosted node setup, start with:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/tools/core-infrastructure/rpc-endpoints",children:"RPC Endpoints"})," \u2014 public endpoint URL, setup examples, rate limits, and supported methods overview"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})," \u2014 method reference and Status Network-specific RPC behavior"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/tools/rpc/running-an-rpc",children:"Running an RPC Node"})," \u2014 self-hosted node setup and operations guidance"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"ethereum-compatibility",children:"Ethereum Compatibility"}),"\n",(0,n.jsx)(t.p,{children:"Status Network is built on the Linea zkEVM stack and is largely EVM-equivalent. For details on the specific differences from Ethereum mainnet \u2014 including opcodes, precompiles, and transaction types \u2014 see:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"Ethereum Differences"})," \u2014 comprehensive breakdown of execution-level differences"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"infrastructure-partners",children:"Infrastructure Partners"}),"\n",(0,n.jsxs)(t.p,{children:["Status Network is onboarding infrastructure partners across indexing, oracles, data providers, wallets, security, and more. See the full list of categories and how to use them on the ",(0,n.jsx)(t.a,{href:"/tools/infrastructure",children:"Infrastructure Partners"})," page."]}),"\n",(0,n.jsxs)(t.p,{children:["Want to become a partner? ",(0,n.jsx)(t.a,{href:"https://statusnetwork.typeform.com/partner",children:"Apply here"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"quick-links",children:"Quick Links"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})," \u2014 Chain ID, RPC URL, and full network configuration"]}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network to your wallet"})}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridging Guide"})," \u2014 Step-by-step bridge instructions"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>o,x:()=>l});var s=r(6540);const n={},i=s.createContext(n);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/99b526a0.17180bc7.js b/assets/js/99b526a0.17180bc7.js deleted file mode 100644 index 15c3085..0000000 --- a/assets/js/99b526a0.17180bc7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7645],{358:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"tools/infrastructure","title":"Infrastructure Partners","description":"Infrastructure partners and third-party integrations available on Status Network \u2014 RPC providers, oracles, indexers, account abstraction, dev tooling, and more.","source":"@site/docs/tools/infrastructure.md","sourceDirName":"tools","slug":"/tools/infrastructure","permalink":"/tools/infrastructure","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/infrastructure.md","tags":[],"version":"current","lastUpdatedAt":1771516914000,"sidebarPosition":6,"frontMatter":{"title":"Infrastructure Partners","description":"Infrastructure partners and third-party integrations available on Status Network \u2014 RPC providers, oracles, indexers, account abstraction, dev tooling, and more.","keywords":["Status Network","infrastructure","partners","oracles","indexing","RPC","account abstraction","dev tooling","cross-chain","onramp"],"sidebar_position":6},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udd00 Ethereum Differences","permalink":"/tools/ethereum-compatibility/ethereum-differences"}}');var s=r(4848),o=r(8453);const a={title:"Infrastructure Partners",description:"Infrastructure partners and third-party integrations available on Status Network \u2014 RPC providers, oracles, indexers, account abstraction, dev tooling, and more.",keywords:["Status Network","infrastructure","partners","oracles","indexing","RPC","account abstraction","dev tooling","cross-chain","onramp"],sidebar_position:6},i=void 0,c={},d=[{value:"Partner Categories",id:"partner-categories",level:2},{value:"Become a Partner",id:"become-a-partner",level:2}];function l(t){const e={a:"a",admonition:"admonition",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.admonition,{title:"Coming Soon",type:"note",children:(0,s.jsx)(e.p,{children:"Status Network is actively onboarding infrastructure partners across the categories below. This page will be updated as integrations go live."})}),"\n",(0,s.jsx)(e.h2,{id:"partner-categories",children:"Partner Categories"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Category"}),(0,s.jsx)(e.th,{children:"Description"})]})}),(0,s.jsxs)(e.tbody,{children:[(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"RPC Providers"})}),(0,s.jsx)(e.td,{children:"Dedicated RPC infrastructure for reliable, low-latency node access"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"Oracles & VRF"})}),(0,s.jsx)(e.td,{children:"Price feeds, RWA data, VRF for on-chain randomness, DEX data feeds"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"Safe & Multisig"})}),(0,s.jsx)(e.td,{children:"Multi-signature wallets for treasury management and governance"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"Indexers"})}),(0,s.jsx)(e.td,{children:"Decentralized and centralized indexing for smart contract events and on-chain data"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"Account Abstraction"})}),(0,s.jsx)(e.td,{children:"Smart accounts, key management, and seamless user onboarding"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"Developer Tooling"})}),(0,s.jsx)(e.td,{children:"SDKs, deployment tools and social login for Status Network"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"Cross-Chain"})}),(0,s.jsx)(e.td,{children:"Cross-chain swap and bridging solutions"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:(0,s.jsx)(e.strong,{children:"Onramp Aggregators"})}),(0,s.jsx)(e.td,{children:"Fiat-to-crypto onramp and offramp solutions"})]})]})]}),"\n",(0,s.jsx)(e.h2,{id:"become-a-partner",children:"Become a Partner"}),"\n",(0,s.jsx)(e.p,{children:"If you provide infrastructure services and want to integrate with Status Network:"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://statusnetwork.typeform.com/partner",children:"Apply to become a partner"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://t.me/statusl2",children:"Join the builder community on Telegram"})}),"\n"]})]})}function u(t={}){const{wrapper:e}={...(0,o.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(l,{...t})}):l(t)}},8453:(t,e,r)=>{r.d(e,{R:()=>a,x:()=>i});var n=r(6540);const s={},o=n.createContext(s);function a(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:a(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/99b526a0.5e7b5aed.js b/assets/js/99b526a0.5e7b5aed.js new file mode 100644 index 0000000..837e365 --- /dev/null +++ b/assets/js/99b526a0.5e7b5aed.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7645],{358:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"tools/infrastructure","title":"Infrastructure Partners: RPC & Tooling for Status","description":"Discover infrastructure partners on Status Network. Access RPC providers, oracles, and indexers to scale your gasless dApps and agentic DeFi strategies.","source":"@site/docs/tools/infrastructure.md","sourceDirName":"tools","slug":"/tools/infrastructure","permalink":"/tools/infrastructure","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/infrastructure.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":6,"frontMatter":{"title":"Infrastructure Partners: RPC & Tooling for Status","description":"Discover infrastructure partners on Status Network. Access RPC providers, oracles, and indexers to scale your gasless dApps and agentic DeFi strategies.","keywords":["Status Network","infrastructure","partners","oracles","indexing","RPC","account abstraction","dev tooling","cross-chain","onramp"],"sidebar_position":6},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udd00 Ethereum Differences","permalink":"/tools/ethereum-compatibility/ethereum-differences"}}');var n=r(4848),o=r(8453);const a={title:"Infrastructure Partners: RPC & Tooling for Status",description:"Discover infrastructure partners on Status Network. Access RPC providers, oracles, and indexers to scale your gasless dApps and agentic DeFi strategies.",keywords:["Status Network","infrastructure","partners","oracles","indexing","RPC","account abstraction","dev tooling","cross-chain","onramp"],sidebar_position:6},i="Infrastructure Partners",c={},d=[{value:"Partner Categories",id:"partner-categories",level:2},{value:"Become a Partner",id:"become-a-partner",level:2}];function l(e){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"infrastructure-partners",children:"Infrastructure Partners"})}),"\n",(0,n.jsx)(t.admonition,{title:"Coming Soon",type:"note",children:(0,n.jsx)(t.p,{children:"Status Network is actively onboarding infrastructure partners across the categories below. This page will be updated as integrations go live."})}),"\n",(0,n.jsx)(t.h2,{id:"partner-categories",children:"Partner Categories"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Category"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"RPC Providers"})}),(0,n.jsx)(t.td,{children:"Dedicated RPC infrastructure for reliable, low-latency node access"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Oracles & VRF"})}),(0,n.jsx)(t.td,{children:"Price feeds, RWA data, VRF for on-chain randomness, DEX data feeds"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Safe & Multisig"})}),(0,n.jsx)(t.td,{children:"Multi-signature wallets for treasury management and governance"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Indexers"})}),(0,n.jsx)(t.td,{children:"Decentralized and centralized indexing for smart contract events and on-chain data"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Account Abstraction"})}),(0,n.jsx)(t.td,{children:"Smart accounts, key management, and seamless user onboarding"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Developer Tooling"})}),(0,n.jsx)(t.td,{children:"SDKs, deployment tools and social login for Status Network"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Cross-Chain"})}),(0,n.jsx)(t.td,{children:"Cross-chain swap and bridging solutions"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Onramp Aggregators"})}),(0,n.jsx)(t.td,{children:"Fiat-to-crypto onramp and offramp solutions"})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"become-a-partner",children:"Become a Partner"}),"\n",(0,n.jsx)(t.p,{children:"If you provide infrastructure services and want to integrate with Status Network:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://statusnetwork.typeform.com/partner",children:"Apply to become a partner"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/statusl2",children:"Join the builder community on Telegram"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>i});var s=r(6540);const n={},o=s.createContext(n);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9b59a278.4021e773.js b/assets/js/9b59a278.4021e773.js new file mode 100644 index 0000000..84c9803 --- /dev/null +++ b/assets/js/9b59a278.4021e773.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[8840],{8453:(e,t,r)=>{r.d(t,{R:()=>i,x:()=>n});var o=r(6540);const a={},s=o.createContext(a);function i(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function n(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),o.createElement(s.Provider,{value:t},e.children)}},9285:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>n,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"build-for-karma/build-for-karma-index","title":"Build for Karma: Developer Guides for the Gasless L2","description":"Ship on Status Network using our guides for gasless integration and Karma reputation. Access tools for contract deployment and private agentic workflows.","source":"@site/docs/build-for-karma/index.md","sourceDirName":"build-for-karma","slug":"/build-for-karma","permalink":"/build-for-karma","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/index.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":1,"frontMatter":{"id":"build-for-karma-index","title":"Build for Karma: Developer Guides for the Gasless L2","description":"Ship on Status Network using our guides for gasless integration and Karma reputation. Access tools for contract deployment and private agentic workflows.","keywords":["Status Network","builder guides","Karma","gasless integration","reputation","deploy contracts","app ideas","developer documentation"],"slug":"/build-for-karma","sidebar_position":1},"sidebar":"buildForKarmaSidebar","next":{"title":"\ud83c\udf1f Why Status Network","permalink":"/build-for-karma/why-status-network"}}');var a=r(4848),s=r(8453);const i={id:"build-for-karma-index",title:"Build for Karma: Developer Guides for the Gasless L2",description:"Ship on Status Network using our guides for gasless integration and Karma reputation. Access tools for contract deployment and private agentic workflows.",keywords:["Status Network","builder guides","Karma","gasless integration","reputation","deploy contracts","app ideas","developer documentation"],slug:"/build-for-karma",sidebar_position:1},n="Build for Karma",d={},l=[{value:"Where to Start",id:"where-to-start",level:2},{value:"Community",id:"community",level:2}];function u(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.header,{children:(0,a.jsx)(t.h1,{id:"build-for-karma",children:"Build for Karma"})}),"\n",(0,a.jsx)(t.p,{children:"This section is your builder hub for Status Network. Whether you want to understand the benefits of building here, explore what to build, learn how to implement gasless transactions, or deploy your first smart contract \u2014 everything you need for Karma-focused building is here."}),"\n",(0,a.jsx)(t.h2,{id:"where-to-start",children:"Where to Start"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"/build-for-karma/why-status-network",children:(0,a.jsx)(t.strong,{children:"Why Status Network"})}),": The case for building here \u2014 gasless economics, Karma, public funding, and how it compares to other L2s."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"/build-for-karma/what-to-build",children:(0,a.jsx)(t.strong,{children:"What to Build"})}),": Interactive idea catalog with filterable app ideas to help your creation."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"/build-for-karma/guides",children:(0,a.jsx)(t.strong,{children:"Using Karma"})}),": Technical guides for integrating gasless transactions and reputation-aware features into your app."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"/build-for-karma/deploying-contracts",children:(0,a.jsx)(t.strong,{children:"Deploy Your First Contract"})}),": Step-by-step contract deployment with Hardhat, Foundry, Remix, or Scaffold-ETH 2."]}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"community",children:"Community"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["Join the ",(0,a.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})," to get help building on Status Network"]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/9b59a278.9c7474e6.js b/assets/js/9b59a278.9c7474e6.js deleted file mode 100644 index ac8351a..0000000 --- a/assets/js/9b59a278.9c7474e6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[8840],{8453:(e,t,r)=>{r.d(t,{R:()=>o,x:()=>s});var i=r(6540);const n={},a=i.createContext(n);function o(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),i.createElement(a.Provider,{value:t},e.children)}},9285:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"build-for-karma/build-for-karma-index","title":"Build for Karma","description":"Everything builders need to ship on Status Network \u2014 guides for gasless and reputation integration, deployment tutorials, and app ideas.","source":"@site/docs/build-for-karma/index.md","sourceDirName":"build-for-karma","slug":"/build-for-karma","permalink":"/build-for-karma","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/index.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"sidebarPosition":1,"frontMatter":{"id":"build-for-karma-index","title":"Build for Karma","description":"Everything builders need to ship on Status Network \u2014 guides for gasless and reputation integration, deployment tutorials, and app ideas.","keywords":["Status Network","builder guides","Karma","gasless integration","reputation","deploy contracts","app ideas","developer documentation"],"slug":"/build-for-karma","sidebar_position":1},"sidebar":"buildForKarmaSidebar","next":{"title":"\ud83c\udf1f Why Status Network","permalink":"/build-for-karma/why-status-network"}}');var n=r(4848),a=r(8453);const o={id:"build-for-karma-index",title:"Build for Karma",description:"Everything builders need to ship on Status Network \u2014 guides for gasless and reputation integration, deployment tutorials, and app ideas.",keywords:["Status Network","builder guides","Karma","gasless integration","reputation","deploy contracts","app ideas","developer documentation"],slug:"/build-for-karma",sidebar_position:1},s=void 0,d={},l=[{value:"Where to Start",id:"where-to-start",level:2},{value:"Community",id:"community",level:2}];function u(e){const t={a:"a",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"This section is your builder hub for Status Network. Whether you want to understand the benefits of building here, explore what to build, learn how to implement gasless transactions, or deploy your first smart contract \u2014 everything you need for Karma-focused building is here."}),"\n",(0,n.jsx)(t.h2,{id:"where-to-start",children:"Where to Start"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/why-status-network",children:(0,n.jsx)(t.strong,{children:"Why Status Network"})}),": The case for building here \u2014 gasless economics, Karma, public funding, and how it compares to other L2s."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/what-to-build",children:(0,n.jsx)(t.strong,{children:"What to Build"})}),": Interactive idea catalog with filterable app ideas to help your creation."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/guides",children:(0,n.jsx)(t.strong,{children:"Using Karma"})}),": Technical guides for integrating gasless transactions and reputation-aware features into your app."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"/build-for-karma/deploying-contracts",children:(0,n.jsx)(t.strong,{children:"Deploy Your First Contract"})}),": Step-by-step contract deployment with Hardhat, Foundry, Remix, or Scaffold-ETH 2."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"community",children:"Community"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Join the ",(0,n.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})," to get help building on Status Network"]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/a0677901.51ea76d0.js b/assets/js/a0677901.51ea76d0.js deleted file mode 100644 index e200da1..0000000 --- a/assets/js/a0677901.51ea76d0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7372],{7774:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"overview/general-info/bridge/bridging-testnet","title":"Bridging to Status Network Testnet","description":"Learn how to bridge tokens between Sepolia and Status Network testnet using the official Status Network bridge. Complete guide with prerequisites and step-by-step instructions.","source":"@site/docs/overview/general-info/bridge/bridging-testnet.md","sourceDirName":"overview/general-info/bridge","slug":"/overview/general-info/bridge/bridging-testnet","permalink":"/overview/general-info/bridge/bridging-testnet","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/bridge/bridging-testnet.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Bridging to Status Network Testnet","description":"Learn how to bridge tokens between Sepolia and Status Network testnet using the official Status Network bridge. Complete guide with prerequisites and step-by-step instructions.","keywords":["Status Network bridge","token bridge","cross-chain bridge","Sepolia bridge","L2 bridge","testnet bridge","blockchain bridge"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udcb0 Pre-Deposit Vault Contracts","permalink":"/overview/general-info/contract-addresses/pre-deposit"},"next":{"title":"\ud83d\udd17 Official Links","permalink":"/overview/other/official-links"}}');var r=n(4848),s=n(8453);const o={title:"Bridging to Status Network Testnet",description:"Learn how to bridge tokens between Sepolia and Status Network testnet using the official Status Network bridge. Complete guide with prerequisites and step-by-step instructions.",keywords:["Status Network bridge","token bridge","cross-chain bridge","Sepolia bridge","L2 bridge","testnet bridge","blockchain bridge"]},a="Bridging to Status Network Testnet",d={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Bridging Process",id:"bridging-process",level:2},{value:"Important Notes",id:"important-notes",level:2}];function c(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"bridging-to-status-network-testnet",children:"Bridging to Status Network Testnet"})}),"\n",(0,r.jsxs)(t.p,{children:["The Status Network bridge allows you to transfer tokens between Sepolia and Status Network testnet. The bridge is deployed at ",(0,r.jsx)(t.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"MetaMask or another Web3 wallet installed"}),"\n",(0,r.jsx)(t.li,{children:"Some testnet ETH on Sepolia network"}),"\n",(0,r.jsx)(t.li,{children:"The token you want to bridge on Sepolia network"}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"bridging-process",children:"Bridging Process"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Visit ",(0,r.jsx)(t.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:'Connect your wallet by clicking the "Connect Wallet" button in the top right corner'}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Select the token you want to bridge from the dropdown menu"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Enter the amount you want to bridge"}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:'Click "Bridge" and confirm the transaction in your wallet'}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Wait for the bridging process to complete"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Bridging typically takes about 5-10 minutes"}),"\n",(0,r.jsx)(t.li,{children:"You can track the status of your bridge transaction on the bridge interface"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"important-notes",children:"Important Notes"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Always verify you're on the correct website (",(0,r.jsx)(t.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"}),") before initiating any transactions"]}),"\n",(0,r.jsx)(t.li,{children:"Start with a small amount to test the bridge before transferring larger amounts"}),"\n",(0,r.jsx)(t.li,{children:"Make sure you have enough ETH in your wallet to cover gas fees"}),"\n",(0,r.jsxs)(t.li,{children:["If you encounter any issues, join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})," for support"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var i=n(6540);const r={},s=i.createContext(r);function o(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a0677901.f133d08b.js b/assets/js/a0677901.f133d08b.js new file mode 100644 index 0000000..928648d --- /dev/null +++ b/assets/js/a0677901.f133d08b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[7372],{7774:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"overview/general-info/bridge/bridging-testnet","title":"Bridging Guide: Transfer Assets to Status Testnet","description":"Step-by-step instructions for bridging tokens to Status Network. Learn the process for moving assets from Sepolia to our reputation-based gasless L2.","source":"@site/docs/overview/general-info/bridge/bridging-testnet.md","sourceDirName":"overview/general-info/bridge","slug":"/overview/general-info/bridge/bridging-testnet","permalink":"/overview/general-info/bridge/bridging-testnet","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/bridge/bridging-testnet.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Bridging Guide: Transfer Assets to Status Testnet","description":"Step-by-step instructions for bridging tokens to Status Network. Learn the process for moving assets from Sepolia to our reputation-based gasless L2.","keywords":["Status Network bridge","token bridge","cross-chain bridge","Sepolia bridge","L2 bridge","testnet bridge","blockchain bridge"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udcb0 Pre-Deposit Vault Contracts","permalink":"/overview/general-info/contract-addresses/pre-deposit"},"next":{"title":"\ud83d\udd17 Official Links","permalink":"/overview/other/official-links"}}');var s=n(4848),i=n(8453);const o={title:"Bridging Guide: Transfer Assets to Status Testnet",description:"Step-by-step instructions for bridging tokens to Status Network. Learn the process for moving assets from Sepolia to our reputation-based gasless L2.",keywords:["Status Network bridge","token bridge","cross-chain bridge","Sepolia bridge","L2 bridge","testnet bridge","blockchain bridge"]},a="Bridging to Status Network Testnet",d={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Bridging Process",id:"bridging-process",level:2},{value:"Important Notes",id:"important-notes",level:2}];function c(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"bridging-to-status-network-testnet",children:"Bridging to Status Network Testnet"})}),"\n",(0,s.jsxs)(t.p,{children:["The Status Network bridge allows you to transfer tokens between Sepolia and Status Network testnet. The bridge is deployed at ",(0,s.jsx)(t.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"MetaMask or another Web3 wallet installed"}),"\n",(0,s.jsx)(t.li,{children:"Some testnet ETH on Sepolia network"}),"\n",(0,s.jsx)(t.li,{children:"The token you want to bridge on Sepolia network"}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"bridging-process",children:"Bridging Process"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Visit ",(0,s.jsx)(t.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"})]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:'Connect your wallet by clicking the "Connect Wallet" button in the top right corner'}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Select the token you want to bridge from the dropdown menu"}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Enter the amount you want to bridge"}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:'Click "Bridge" and confirm the transaction in your wallet'}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Wait for the bridging process to complete"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Bridging typically takes about 5-10 minutes"}),"\n",(0,s.jsx)(t.li,{children:"You can track the status of your bridge transaction on the bridge interface"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"important-notes",children:"Important Notes"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Always verify you're on the correct website (",(0,s.jsx)(t.a,{href:"https://bridge.status.network",children:"https://bridge.status.network"}),") before initiating any transactions"]}),"\n",(0,s.jsx)(t.li,{children:"Start with a small amount to test the bridge before transferring larger amounts"}),"\n",(0,s.jsx)(t.li,{children:"Make sure you have enough ETH in your wallet to cover gas fees"}),"\n",(0,s.jsxs)(t.li,{children:["If you encounter any issues, join our ",(0,s.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})," for support"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function o(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a9f02243.37597082.js b/assets/js/a9f02243.37597082.js new file mode 100644 index 0000000..6a03377 --- /dev/null +++ b/assets/js/a9f02243.37597082.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[1500],{6101:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>a});const s=JSON.parse('{"id":"overview/introduction/quick-start","title":"Quick Start Guide: Deploy on Status Network Gasless L2","description":"Get started on Status Network in under 10 minutes. Deploy smart contracts using Remix, fetch test ETH, and interact with our gasless execution environment.","source":"@site/docs/overview/introduction/quick-start.md","sourceDirName":"overview/introduction","slug":"/overview/introduction/quick-start","permalink":"/overview/introduction/quick-start","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/introduction/quick-start.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Quick Start Guide: Deploy on Status Network Gasless L2","description":"Get started on Status Network in under 10 minutes. Deploy smart contracts using Remix, fetch test ETH, and interact with our gasless execution environment.","keywords":["Status Network tutorial","quick start","smart contract deployment","Remix IDE","blockchain development","testnet setup","MetaMask configuration"]},"sidebar":"homeSidebar","previous":{"title":"\ud83c\udf34 Home","permalink":"/overview"},"next":{"title":"\ud83e\udd1d Economic Model","permalink":"/overview/tokenomics/economic-model"}}');var r=n(4848),i=n(8453);const o={title:"Quick Start Guide: Deploy on Status Network Gasless L2",description:"Get started on Status Network in under 10 minutes. Deploy smart contracts using Remix, fetch test ETH, and interact with our gasless execution environment.",keywords:["Status Network tutorial","quick start","smart contract deployment","Remix IDE","blockchain development","testnet setup","MetaMask configuration"]},l="Quick Start",c={},a=[{value:"Get Everything Ready",id:"get-everything-ready",level:2},{value:"Remix & Sample Code",id:"remix--sample-code",level:2},{value:"Steps to Deploy",id:"steps-to-deploy",level:2},{value:"Interact with Your Deployed Smart Contract",id:"interact-with-your-deployed-smart-contract",level:2},{value:"Next Steps",id:"next-steps",level:2},{value:"Summary",id:"summary",level:2}];function d(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"quick-start",children:"Quick Start"})}),"\n",(0,r.jsxs)(t.p,{children:["In this section, we'll get you deploying a sample contract on ",(0,r.jsx)(t.strong,{children:"Status Network Testnet"})," in less than 10 minutes."]}),"\n",(0,r.jsx)(t.p,{children:"Let's see how to deploy a smart contract on Status Network using the Remix IDE for simplicity."}),"\n",(0,r.jsx)(t.h2,{id:"get-everything-ready",children:"Get Everything Ready"}),"\n",(0,r.jsx)(t.p,{children:"Before getting started:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Add Status Network Testnet to MetaMask"}),":"]}),"\n",(0,r.jsxs)(t.p,{children:["Follow the ",(0,r.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network guide"})," for step-by-step instructions on how to add the Status Network testnet to MetaMask."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Get Test ETH"}),":"]}),"\n",(0,r.jsx)(t.p,{children:"You'll need both Sepolia ETH and Status Network Testnet ETH:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["First get Sepolia ETH from ",(0,r.jsx)(t.a,{href:"https://faucet.status.network",children:"Sepolia Faucet"})]}),"\n",(0,r.jsxs)(t.li,{children:["Then bridge some ETH to Status Network Testnet using the ",(0,r.jsx)(t.a,{href:"https://bridge.status.network",children:"Status Bridge"})]}),"\n",(0,r.jsxs)(t.li,{children:["Alternatively, get Status Network Testnet ETH directly from our ",(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network/address/0x06338B70F1eAbc60d7A82C083e605C07F78bb878",children:"Testnet Faucet"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"We are ready to get started!"}),"\n",(0,r.jsx)(t.h2,{id:"remix--sample-code",children:"Remix & Sample Code"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Remix"})," is a no-setup tool for developing smart contracts. It's easy to get started, allowing a simple deployment process, debugging, interacting with smart contracts, and more."]}),"\n",(0,r.jsxs)(t.p,{children:["For this tutorial, we will deploy a simple ",(0,r.jsx)(t.code,{children:"SimpleStorage.sol"})," contract:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-solidity",children:"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract SimpleStorage {\n uint256 number;\n \n function store(uint256 num) public {\n number = num;\n }\n\n function retrieve() public view returns (uint256) {\n return number;\n }\n}\n"})}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Note:"})," This contract lets you store a number and then read what that number is."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"steps-to-deploy",children:"Steps to Deploy"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Copy the Sample Code"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Copy the sample code and paste it into a new file named ",(0,r.jsx)(t.code,{children:"SimpleStorage.sol"})," in Remix."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Compile the Smart Contract"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Go to the ",(0,r.jsx)(t.strong,{children:"Solidity Compiler"})," tab (on the left sidebar)."]}),"\n",(0,r.jsx)(t.li,{children:"Ensure the compiler version is 0.8.0 or higher."}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:'"Compile SimpleStorage.sol"'}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["You can enable ",(0,r.jsx)(t.strong,{children:'"Auto compile"'})," for automatic compilation whenever you change the contract code."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Deploy the Smart Contract"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Switch to the ",(0,r.jsx)(t.strong,{children:"Deploy & Run Transactions"})," tab."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:'"Environment"'})," dropdown menu, select ",(0,r.jsx)(t.strong,{children:'"Injected Provider - MetaMask"'}),"."]}),"\n",(0,r.jsx)(t.li,{children:"MetaMask may prompt you to connect to Remix. Confirm the connection."}),"\n",(0,r.jsxs)(t.li,{children:["Ensure that ",(0,r.jsx)(t.strong,{children:"Status Network Testnet"})," is selected in MetaMask."]}),"\n",(0,r.jsxs)(t.li,{children:["Under ",(0,r.jsx)(t.strong,{children:'"Contract"'}),", make sure ",(0,r.jsx)(t.code,{children:"SimpleStorage"})," is selected."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:'"Deploy"'}),"."]}),"\n",(0,r.jsx)(t.li,{children:"MetaMask will pop up, asking you to confirm the transaction. Gas fees will be paid in ETH."}),"\n",(0,r.jsxs)(t.li,{children:["Review the transaction details and click ",(0,r.jsx)(t.strong,{children:'"Confirm"'}),"."]}),"\n",(0,r.jsx)(t.li,{children:"Wait for the transaction to be mined."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Verify Deployment"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Once deployed, copy your contract's address from Remix"}),"\n",(0,r.jsxs)(t.li,{children:["View it on ",(0,r.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"CONGRATULATIONS!"})," You just deployed your first smart contract on Status Network."]}),"\n",(0,r.jsx)(t.h2,{id:"interact-with-your-deployed-smart-contract",children:"Interact with Your Deployed Smart Contract"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Access Deployed Contract"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["In Remix, under the ",(0,r.jsx)(t.strong,{children:'"Deployed Contracts"'})," section, you'll see your deployed ",(0,r.jsx)(t.code,{children:"SimpleStorage"})," contract."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Store a Number"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Expand the deployed contract to view its functions."}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:'"store"'})," function input field, enter a number (e.g., ",(0,r.jsx)(t.code,{children:"42"}),")."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:'"transact"'}),"."]}),"\n",(0,r.jsx)(t.li,{children:"MetaMask will prompt you to confirm the transaction. Gas fees will be paid in ETH."}),"\n",(0,r.jsx)(t.li,{children:"Wait for the transaction to be confirmed."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Retrieve the Number"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Click on the ",(0,r.jsx)(t.strong,{children:'"retrieve"'})," function."]}),"\n",(0,r.jsx)(t.li,{children:"The stored number will display below the button."}),"\n",(0,r.jsx)(t.li,{children:"This is a view function, so no gas fees are required."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Get Support"}),":","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for assistance"]}),"\n",(0,r.jsxs)(t.li,{children:["Check our ",(0,r.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})," for more information"]}),"\n",(0,r.jsxs)(t.li,{children:["Learn about ",(0,r.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"bridging tokens"})," to Status Network"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"summary",children:"Summary"}),"\n",(0,r.jsx)(t.p,{children:"You've successfully:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Set up your environment to interact with Status Network Testnet"}),"\n",(0,r.jsx)(t.li,{children:"Obtained testnet ETH through bridging or faucet"}),"\n",(0,r.jsx)(t.li,{children:"Deployed a smart contract using Remix IDE and MetaMask"}),"\n",(0,r.jsx)(t.li,{children:"Interacted with your deployed contract by storing and retrieving a number"}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"For more advanced development, check out our guides for deploying with:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/build-for-karma/deploying-contracts/using-hardhat",children:"Hardhat"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/build-for-karma/deploying-contracts/using-foundry",children:"Foundry"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var s=n(6540);const r={},i=s.createContext(r);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a9f02243.ffcc1fad.js b/assets/js/a9f02243.ffcc1fad.js deleted file mode 100644 index ea9c5a2..0000000 --- a/assets/js/a9f02243.ffcc1fad.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[1500],{6101:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"overview/introduction/quick-start","title":"Quick Start","description":"Get started with Status Network in under 10 minutes. Learn how to deploy your first smart contract using Remix IDE, get test ETH, and interact with the network.","source":"@site/docs/overview/introduction/quick-start.md","sourceDirName":"overview/introduction","slug":"/overview/introduction/quick-start","permalink":"/overview/introduction/quick-start","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/introduction/quick-start.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Quick Start","description":"Get started with Status Network in under 10 minutes. Learn how to deploy your first smart contract using Remix IDE, get test ETH, and interact with the network.","keywords":["Status Network tutorial","quick start","smart contract deployment","Remix IDE","blockchain development","testnet setup","MetaMask configuration"]},"sidebar":"homeSidebar","previous":{"title":"\ud83c\udf34 Home","permalink":"/overview"},"next":{"title":"\ud83e\udd1d Economic Model","permalink":"/overview/tokenomics/economic-model"}}');var s=n(4848),i=n(8453);const o={title:"Quick Start",description:"Get started with Status Network in under 10 minutes. Learn how to deploy your first smart contract using Remix IDE, get test ETH, and interact with the network.",keywords:["Status Network tutorial","quick start","smart contract deployment","Remix IDE","blockchain development","testnet setup","MetaMask configuration"]},l="Quick Start",c={},d=[{value:"Get Everything Ready",id:"get-everything-ready",level:2},{value:"Remix & Sample Code",id:"remix--sample-code",level:2},{value:"Steps to Deploy",id:"steps-to-deploy",level:2},{value:"Interact with Your Deployed Smart Contract",id:"interact-with-your-deployed-smart-contract",level:2},{value:"Next Steps",id:"next-steps",level:2},{value:"Summary",id:"summary",level:2}];function a(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"quick-start",children:"Quick Start"})}),"\n",(0,s.jsxs)(t.p,{children:["In this section, we'll get you deploying a sample contract on ",(0,s.jsx)(t.strong,{children:"Status Network Testnet"})," in less than 10 minutes."]}),"\n",(0,s.jsx)(t.p,{children:"Let's see how to deploy a smart contract on Status Network using the Remix IDE for simplicity."}),"\n",(0,s.jsx)(t.h2,{id:"get-everything-ready",children:"Get Everything Ready"}),"\n",(0,s.jsx)(t.p,{children:"Before getting started:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Add Status Network Testnet to MetaMask"}),":"]}),"\n",(0,s.jsxs)(t.p,{children:["Follow the ",(0,s.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network guide"})," for step-by-step instructions on how to add the Status Network testnet to MetaMask."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Get Test ETH"}),":"]}),"\n",(0,s.jsx)(t.p,{children:"You'll need both Sepolia ETH and Status Network Testnet ETH:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["First get Sepolia ETH from ",(0,s.jsx)(t.a,{href:"https://faucet.status.network",children:"Sepolia Faucet"})]}),"\n",(0,s.jsxs)(t.li,{children:["Then bridge some ETH to Status Network Testnet using the ",(0,s.jsx)(t.a,{href:"https://bridge.status.network",children:"Status Bridge"})]}),"\n",(0,s.jsxs)(t.li,{children:["Alternatively, get Status Network Testnet ETH directly from our ",(0,s.jsx)(t.a,{href:"https://sepoliascan.status.network/address/0x06338B70F1eAbc60d7A82C083e605C07F78bb878",children:"Testnet Faucet"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"We are ready to get started!"}),"\n",(0,s.jsx)(t.h2,{id:"remix--sample-code",children:"Remix & Sample Code"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Remix"})," is a no-setup tool for developing smart contracts. It's easy to get started, allowing a simple deployment process, debugging, interacting with smart contracts, and more."]}),"\n",(0,s.jsxs)(t.p,{children:["For this tutorial, we will deploy a simple ",(0,s.jsx)(t.code,{children:"SimpleStorage.sol"})," contract:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-solidity",children:"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract SimpleStorage {\n uint256 number;\n \n function store(uint256 num) public {\n number = num;\n }\n\n function retrieve() public view returns (uint256) {\n return number;\n }\n}\n"})}),"\n",(0,s.jsxs)(t.blockquote,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Note:"})," This contract lets you store a number and then read what that number is."]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"steps-to-deploy",children:"Steps to Deploy"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Copy the Sample Code"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Copy the sample code and paste it into a new file named ",(0,s.jsx)(t.code,{children:"SimpleStorage.sol"})," in Remix."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Compile the Smart Contract"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Go to the ",(0,s.jsx)(t.strong,{children:"Solidity Compiler"})," tab (on the left sidebar)."]}),"\n",(0,s.jsx)(t.li,{children:"Ensure the compiler version is 0.8.0 or higher."}),"\n",(0,s.jsxs)(t.li,{children:["Click ",(0,s.jsx)(t.strong,{children:'"Compile SimpleStorage.sol"'}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["You can enable ",(0,s.jsx)(t.strong,{children:'"Auto compile"'})," for automatic compilation whenever you change the contract code."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Deploy the Smart Contract"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Switch to the ",(0,s.jsx)(t.strong,{children:"Deploy & Run Transactions"})," tab."]}),"\n",(0,s.jsxs)(t.li,{children:["In the ",(0,s.jsx)(t.strong,{children:'"Environment"'})," dropdown menu, select ",(0,s.jsx)(t.strong,{children:'"Injected Provider - MetaMask"'}),"."]}),"\n",(0,s.jsx)(t.li,{children:"MetaMask may prompt you to connect to Remix. Confirm the connection."}),"\n",(0,s.jsxs)(t.li,{children:["Ensure that ",(0,s.jsx)(t.strong,{children:"Status Network Testnet"})," is selected in MetaMask."]}),"\n",(0,s.jsxs)(t.li,{children:["Under ",(0,s.jsx)(t.strong,{children:'"Contract"'}),", make sure ",(0,s.jsx)(t.code,{children:"SimpleStorage"})," is selected."]}),"\n",(0,s.jsxs)(t.li,{children:["Click ",(0,s.jsx)(t.strong,{children:'"Deploy"'}),"."]}),"\n",(0,s.jsx)(t.li,{children:"MetaMask will pop up, asking you to confirm the transaction. Gas fees will be paid in ETH."}),"\n",(0,s.jsxs)(t.li,{children:["Review the transaction details and click ",(0,s.jsx)(t.strong,{children:'"Confirm"'}),"."]}),"\n",(0,s.jsx)(t.li,{children:"Wait for the transaction to be mined."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Verify Deployment"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Once deployed, copy your contract's address from Remix"}),"\n",(0,s.jsxs)(t.li,{children:["View it on ",(0,s.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"CONGRATULATIONS!"})," You just deployed your first smart contract on Status Network."]}),"\n",(0,s.jsx)(t.h2,{id:"interact-with-your-deployed-smart-contract",children:"Interact with Your Deployed Smart Contract"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Access Deployed Contract"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["In Remix, under the ",(0,s.jsx)(t.strong,{children:'"Deployed Contracts"'})," section, you'll see your deployed ",(0,s.jsx)(t.code,{children:"SimpleStorage"})," contract."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Store a Number"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Expand the deployed contract to view its functions."}),"\n",(0,s.jsxs)(t.li,{children:["In the ",(0,s.jsx)(t.strong,{children:'"store"'})," function input field, enter a number (e.g., ",(0,s.jsx)(t.code,{children:"42"}),")."]}),"\n",(0,s.jsxs)(t.li,{children:["Click ",(0,s.jsx)(t.strong,{children:'"transact"'}),"."]}),"\n",(0,s.jsx)(t.li,{children:"MetaMask will prompt you to confirm the transaction. Gas fees will be paid in ETH."}),"\n",(0,s.jsx)(t.li,{children:"Wait for the transaction to be confirmed."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Retrieve the Number"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Click on the ",(0,s.jsx)(t.strong,{children:'"retrieve"'})," function."]}),"\n",(0,s.jsx)(t.li,{children:"The stored number will display below the button."}),"\n",(0,s.jsx)(t.li,{children:"This is a view function, so no gas fees are required."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Get Support"}),":","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Join our ",(0,s.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for assistance"]}),"\n",(0,s.jsxs)(t.li,{children:["Check our ",(0,s.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})," for more information"]}),"\n",(0,s.jsxs)(t.li,{children:["Learn about ",(0,s.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"bridging tokens"})," to Status Network"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"summary",children:"Summary"}),"\n",(0,s.jsx)(t.p,{children:"You've successfully:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Set up your environment to interact with Status Network Testnet"}),"\n",(0,s.jsx)(t.li,{children:"Obtained testnet ETH through bridging or faucet"}),"\n",(0,s.jsx)(t.li,{children:"Deployed a smart contract using Remix IDE and MetaMask"}),"\n",(0,s.jsx)(t.li,{children:"Interacted with your deployed contract by storing and retrieving a number"}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"For more advanced development, check out our guides for deploying with:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/build-for-karma/deploying-contracts/using-hardhat",children:"Hardhat"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/build-for-karma/deploying-contracts/using-foundry",children:"Foundry"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var r=n(6540);const s={},i=r.createContext(s);function o(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bdb9291e.104e77fa.js b/assets/js/bdb9291e.104e77fa.js new file mode 100644 index 0000000..4c8e49b --- /dev/null +++ b/assets/js/bdb9291e.104e77fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5471],{650:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"overview/tokenomics/public-funding","title":"Public Funding: Yield Allocation & Developer Grants","description":"Overview of Status Network\'s funding pool. Learn how native yield is governed by Karma holders to fund builders, liquidity, and public goods on our L2.","source":"@site/docs/overview/tokenomics/public-funding.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/public-funding","permalink":"/overview/tokenomics/public-funding","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/public-funding.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Public Funding: Yield Allocation & Developer Grants","description":"Overview of Status Network\'s funding pool. Learn how native yield is governed by Karma holders to fund builders, liquidity, and public goods on our L2.","keywords":["Status Network funding","apps funding pool","blockchain funding","public goods","developer incentives","community governance","sustainable funding"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\udd1d Economic Model","permalink":"/overview/tokenomics/economic-model"},"next":{"title":"\ud83d\udc09 Karmic Tokenomics","permalink":"/overview/tokenomics/karmic-tokenomics"}}');var t=i(4848),s=i(8453);const r={title:"Public Funding: Yield Allocation & Developer Grants",description:"Overview of Status Network's funding pool. Learn how native yield is governed by Karma holders to fund builders, liquidity, and public goods on our L2.",keywords:["Status Network funding","apps funding pool","blockchain funding","public goods","developer incentives","community governance","sustainable funding"]},l="Public Funding",a={},d=[{value:"Apps Funding Pool and Public Funding Mechanism",id:"apps-funding-pool-and-public-funding-mechanism",level:2},{value:"Why Public Funding Matters",id:"why-public-funding-matters",level:3},{value:"How the Apps Funding Pool Works",id:"how-the-apps-funding-pool-works",level:3}];function c(e){const n={h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"public-funding",children:"Public Funding"})}),"\n",(0,t.jsx)(n.h2,{id:"apps-funding-pool-and-public-funding-mechanism",children:"Apps Funding Pool and Public Funding Mechanism"}),"\n",(0,t.jsx)(n.p,{children:"One of the most critical components of Status Network is the apps funding pool, designed to provide sustainable financial support for applications built on the network. Unlike traditional blockchain ecosystems where developers rely on grants or short-term incentives, Status Network ensures continuous funding through a self-sustaining mechanism driven by network activity and TVL."}),"\n",(0,t.jsx)(n.h3,{id:"why-public-funding-matters",children:"Why Public Funding Matters"}),"\n",(0,t.jsx)(n.p,{children:"Public funding is essential to ensure that builders have access to capital without dependence on extractive external funding mechanisms. The Status organisation has a long-standing history of investing in open-source projects and decentralised infrastructure, reinforcing its commitment to public goods. The apps funding pool extends this ethos by providing a decentralized, community-driven allocation mechanism where developers can receive financial support directly from the network itself."}),"\n",(0,t.jsx)(n.h3,{id:"how-the-apps-funding-pool-works",children:"How the Apps Funding Pool Works"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Funded by Native Yield and Fees"}),": A significant part of the yield generated from bridged assets (ETH and DAI initially) and from the native DEX swap fees flows directly into the funding pool."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Governed by Karma Holders"}),": Allocation of funds is determined by Karma token holders, ensuring a community-led decision-making process: if the community loves your app, you'll get funding."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Transparent and Fair Distribution"}),": Initially, funding will be capped at a limited number of recipients to maintain quality control, but as the pool grows, more projects will be supported."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Aligning Builders with Network Growth"}),": Developers who actively contribute to network usage and adoption will receive more voting power in the form of Karma, allowing them to vote for themselves and reinforcing the incentive to create valuable applications."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"This mechanism ensures a continuous, non-extractive source of capital for builders, allowing them to focus on creating successful applications."})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>l});var o=i(6540);const t={},s=o.createContext(t);function r(e){const n=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bdb9291e.6c8e8bd5.js b/assets/js/bdb9291e.6c8e8bd5.js deleted file mode 100644 index 3266dd4..0000000 --- a/assets/js/bdb9291e.6c8e8bd5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5471],{650:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"overview/tokenomics/public-funding","title":"Public Funding","description":"Overview of Status Network\'s public funding mechanism, including the apps funding pool, how funding is allocated, and why sustainable funding is crucial for blockchain applications.","source":"@site/docs/overview/tokenomics/public-funding.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/public-funding","permalink":"/overview/tokenomics/public-funding","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/public-funding.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Public Funding","description":"Overview of Status Network\'s public funding mechanism, including the apps funding pool, how funding is allocated, and why sustainable funding is crucial for blockchain applications.","keywords":["Status Network funding","apps funding pool","blockchain funding","public goods","developer incentives","community governance","sustainable funding"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\udd1d Economic Model","permalink":"/overview/tokenomics/economic-model"},"next":{"title":"\ud83d\udc09 Karmic Tokenomics","permalink":"/overview/tokenomics/karmic-tokenomics"}}');var t=i(4848),s=i(8453);const r={title:"Public Funding",description:"Overview of Status Network's public funding mechanism, including the apps funding pool, how funding is allocated, and why sustainable funding is crucial for blockchain applications.",keywords:["Status Network funding","apps funding pool","blockchain funding","public goods","developer incentives","community governance","sustainable funding"]},a="Public Funding",c={},l=[{value:"Apps Funding Pool and Public Funding Mechanism",id:"apps-funding-pool-and-public-funding-mechanism",level:2},{value:"Why Public Funding Matters",id:"why-public-funding-matters",level:3},{value:"How the Apps Funding Pool Works",id:"how-the-apps-funding-pool-works",level:3}];function d(n){const e={h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.header,{children:(0,t.jsx)(e.h1,{id:"public-funding",children:"Public Funding"})}),"\n",(0,t.jsx)(e.h2,{id:"apps-funding-pool-and-public-funding-mechanism",children:"Apps Funding Pool and Public Funding Mechanism"}),"\n",(0,t.jsx)(e.p,{children:"One of the most critical components of Status Network is the apps funding pool, designed to provide sustainable financial support for applications built on the network. Unlike traditional blockchain ecosystems where developers rely on grants or short-term incentives, Status Network ensures continuous funding through a self-sustaining mechanism driven by network activity and TVL."}),"\n",(0,t.jsx)(e.h3,{id:"why-public-funding-matters",children:"Why Public Funding Matters"}),"\n",(0,t.jsx)(e.p,{children:"Public funding is essential to ensure that builders have access to capital without dependence on extractive external funding mechanisms. The Status organisation has a long-standing history of investing in open-source projects and decentralised infrastructure, reinforcing its commitment to public goods. The apps funding pool extends this ethos by providing a decentralized, community-driven allocation mechanism where developers can receive financial support directly from the network itself."}),"\n",(0,t.jsx)(e.h3,{id:"how-the-apps-funding-pool-works",children:"How the Apps Funding Pool Works"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsxs)(e.p,{children:[(0,t.jsx)(e.strong,{children:"Funded by Native Yield and Fees"}),": A significant part of the yield generated from bridged assets (ETH and DAI initially) and from the native DEX swap fees flows directly into the funding pool."]}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsxs)(e.p,{children:[(0,t.jsx)(e.strong,{children:"Governed by Karma Holders"}),": Allocation of funds is determined by Karma token holders, ensuring a community-led decision-making process: if the community loves your app, you'll get funding."]}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsxs)(e.p,{children:[(0,t.jsx)(e.strong,{children:"Transparent and Fair Distribution"}),": Initially, funding will be capped at a limited number of recipients to maintain quality control, but as the pool grows, more projects will be supported."]}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsxs)(e.p,{children:[(0,t.jsx)(e.strong,{children:"Aligning Builders with Network Growth"}),": Developers who actively contribute to network usage and adoption will receive more voting power in the form of Karma, allowing them to vote for themselves and reinforcing the incentive to create valuable applications."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(e.p,{children:"This mechanism ensures a continuous, non-extractive source of capital for builders, allowing them to focus on creating successful applications."})]})}function u(n={}){const{wrapper:e}={...(0,s.R)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(d,{...n})}):d(n)}},8453:(n,e,i)=>{i.d(e,{R:()=>r,x:()=>a});var o=i(6540);const t={},s=o.createContext(t);function r(n){const e=o.useContext(s);return o.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function a(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(t):n.components||t:r(n.components),o.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/c50f765a.6af898bd.js b/assets/js/c50f765a.6af898bd.js deleted file mode 100644 index b2bbce6..0000000 --- a/assets/js/c50f765a.6af898bd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[1928],{3038:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"overview/general-info/contract-addresses/tokens","title":"Tokens","description":"Official list of supported tokens and their contract addresses on Status Network, including both L1 and L2 token addresses and bridge mappings.","source":"@site/docs/overview/general-info/contract-addresses/tokens.md","sourceDirName":"overview/general-info/contract-addresses","slug":"/overview/general-info/contract-addresses/tokens","permalink":"/overview/general-info/contract-addresses/tokens","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/contract-addresses/tokens.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Tokens","description":"Official list of supported tokens and their contract addresses on Status Network, including both L1 and L2 token addresses and bridge mappings.","keywords":["Status Network tokens","token list","supported tokens","token addresses","L2 tokens","bridge tokens"]},"sidebar":"homeSidebar","previous":{"title":"\u2795 Add Status Network","permalink":"/overview/general-info/add-status-network"},"next":{"title":"\ud83e\uddea Testnet Contracts","permalink":"/overview/general-info/contract-addresses/testnet-contracts"}}');var o=s(4848),r=s(8453);const a={title:"Tokens",description:"Official list of supported tokens and their contract addresses on Status Network, including both L1 and L2 token addresses and bridge mappings.",keywords:["Status Network tokens","token list","supported tokens","token addresses","L2 tokens","bridge tokens"]},i="Tokens",d={},c=[];function l(e){const t={a:"a",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"tokens",children:"Tokens"})}),"\n",(0,o.jsxs)(t.p,{children:["For the most up-to-date list of supported tokens and their contract addresses on Status Network, please refer to our official ",(0,o.jsx)(t.a,{href:"https://github.com/status-im/status-network-token-list",children:"Status Network Token List repository"}),"."]}),"\n",(0,o.jsx)(t.p,{children:"This repository contains:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Token addresses for both L1 (Sepolia) and L2 (Status Network)"}),"\n",(0,o.jsx)(t.li,{children:"Token metadata (decimals, symbols, etc.)"}),"\n",(0,o.jsx)(t.li,{children:"Bridge contract mappings"}),"\n",(0,o.jsx)(t.li,{children:"App tokens deployed on Status Network"}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"The token list is maintained and updated regularly to ensure accuracy and security of token bridging operations."})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>i});var n=s(6540);const o={},r=n.createContext(o);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c50f765a.b10cbbdc.js b/assets/js/c50f765a.b10cbbdc.js new file mode 100644 index 0000000..811f735 --- /dev/null +++ b/assets/js/c50f765a.b10cbbdc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[1928],{3038:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"overview/general-info/contract-addresses/tokens","title":"Tokens: Official Contract Addresses on Status Network","description":"Directory of supported tokens on Status Network. Find L1 and L2 contract addresses for ETH, stablecoins, and SNT used within our gasless ecosystem.","source":"@site/docs/overview/general-info/contract-addresses/tokens.md","sourceDirName":"overview/general-info/contract-addresses","slug":"/overview/general-info/contract-addresses/tokens","permalink":"/overview/general-info/contract-addresses/tokens","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/contract-addresses/tokens.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Tokens: Official Contract Addresses on Status Network","description":"Directory of supported tokens on Status Network. Find L1 and L2 contract addresses for ETH, stablecoins, and SNT used within our gasless ecosystem.","keywords":["Status Network tokens","token list","supported tokens","token addresses","L2 tokens","bridge tokens"]},"sidebar":"homeSidebar","previous":{"title":"\u2795 Add Status Network","permalink":"/overview/general-info/add-status-network"},"next":{"title":"\ud83e\uddea Testnet Contracts","permalink":"/overview/general-info/contract-addresses/testnet-contracts"}}');var n=s(4848),r=s(8453);const a={title:"Tokens: Official Contract Addresses on Status Network",description:"Directory of supported tokens on Status Network. Find L1 and L2 contract addresses for ETH, stablecoins, and SNT used within our gasless ecosystem.",keywords:["Status Network tokens","token list","supported tokens","token addresses","L2 tokens","bridge tokens"]},i="Tokens",d={},c=[];function l(e){const t={a:"a",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"tokens",children:"Tokens"})}),"\n",(0,n.jsxs)(t.p,{children:["For the most up-to-date list of supported tokens and their contract addresses on Status Network, please refer to our official ",(0,n.jsx)(t.a,{href:"https://github.com/status-im/status-network-token-list",children:"Status Network Token List repository"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"This repository contains:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Token addresses for both L1 (Sepolia) and L2 (Status Network)"}),"\n",(0,n.jsx)(t.li,{children:"Token metadata (decimals, symbols, etc.)"}),"\n",(0,n.jsx)(t.li,{children:"Bridge contract mappings"}),"\n",(0,n.jsx)(t.li,{children:"App tokens deployed on Status Network"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"The token list is maintained and updated regularly to ensure accuracy and security of token bridging operations."})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>i});var o=s(6540);const n={},r=o.createContext(n);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c5b3c385.392d993e.js b/assets/js/c5b3c385.392d993e.js new file mode 100644 index 0000000..ff9920e --- /dev/null +++ b/assets/js/c5b3c385.392d993e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5621],{3301:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"overview/general-info/contract-addresses/pre-deposit","title":"Pre-Deposit Vaults: Status Network Campaign Links","description":"View the official vault addresses for the Status Network pre-deposit campaign. Participate in early staking and liquidity provision to earn early Karma.","source":"@site/docs/overview/general-info/contract-addresses/pre-deposit.md","sourceDirName":"overview/general-info/contract-addresses","slug":"/overview/general-info/contract-addresses/pre-deposit","permalink":"/overview/general-info/contract-addresses/pre-deposit","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/contract-addresses/pre-deposit.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Pre-Deposit Vaults: Status Network Campaign Links","description":"View the official vault addresses for the Status Network pre-deposit campaign. Participate in early staking and liquidity provision to earn early Karma.","keywords":["Status Network","Pre-deposit","Campaign","Vaults"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\uddea Testnet Contracts","permalink":"/overview/general-info/contract-addresses/testnet-contracts"},"next":{"title":"\ud83e\uddea Bridging Testnet","permalink":"/overview/general-info/bridge/bridging-testnet"}}');var r=s(4848),i=s(8453);const a={title:"Pre-Deposit Vaults: Status Network Campaign Links",description:"View the official vault addresses for the Status Network pre-deposit campaign. Participate in early staking and liquidity provision to earn early Karma.",keywords:["Status Network","Pre-deposit","Campaign","Vaults"]},o="Pre-Deposit Vault Contracts",d={},c=[{value:"Vaults",id:"vaults",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"pre-deposit-vault-contracts",children:"Pre-Deposit Vault Contracts"})}),"\n",(0,r.jsxs)(n.p,{children:["In collaboration with ",(0,r.jsx)(n.a,{href:"https://www.aragon.org/",children:"Aragon"}),", we're running our pre-deposit campaign for Status Network users.\nThis page lists all the important contract addresses of the campaign."]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsx)(n.p,{children:"Depending on the vault's token, it's going to be deployed either on Ethereum Mainnet or Linea Mainnet"})}),"\n",(0,r.jsx)(n.h2,{id:"vaults",children:"Vaults"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"SNT Vault"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Address:"})," ",(0,r.jsx)(n.a,{href:"https://etherscan.io/address/0x493957e168accdddf849913c3d60988c652935cd",children:(0,r.jsx)(n.code,{children:"0x493957e168accdddf849913c3d60988c652935cd"})})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network:"})," Ethereum Mainnet"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Symbol:"})," svSNT"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"LINEA Vault"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Address:"})," ",(0,r.jsx)(n.a,{href:"https://lineascan.build/address/0xb223ca53a53a5931426b601fa01ed2425d8540fb",children:(0,r.jsx)(n.code,{children:"0xb223ca53a53a5931426b601fa01ed2425d8540fb"})})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network:"})," Linea Mainnet"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Symbol:"})," svLINEA"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ETH Vault"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Address:"})," ",(0,r.jsx)(n.a,{href:"https://etherscan.io/address/0xc71ec84ee70a54000db3370807bfaf4309a67a1f",children:(0,r.jsx)(n.code,{children:"0xc71ec84ee70a54000db3370807bfaf4309a67a1f"})})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network:"})," Ethereum Mainnet"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Symbol:"})," svWETH"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"GUSD Vault"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Address:"})," ",(0,r.jsx)(n.a,{href:"https://etherscan.io/address/0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919",children:(0,r.jsx)(n.code,{children:"0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919"})})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network:"})," Ethereum Mainnet"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Symbol:"})," N/A, GUSD vault does not issue a receipt token."]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var t=s(6540);const r={},i=t.createContext(r);function a(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c5b3c385.41927bed.js b/assets/js/c5b3c385.41927bed.js deleted file mode 100644 index fc165cd..0000000 --- a/assets/js/c5b3c385.41927bed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5621],{3301:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"overview/general-info/contract-addresses/pre-deposit","title":"Pre-Deposit Vault Contracts","description":"List of Status Network pre-deposit campaign vault addresses.","source":"@site/docs/overview/general-info/contract-addresses/pre-deposit.md","sourceDirName":"overview/general-info/contract-addresses","slug":"/overview/general-info/contract-addresses/pre-deposit","permalink":"/overview/general-info/contract-addresses/pre-deposit","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/contract-addresses/pre-deposit.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Pre-Deposit Vault Contracts","description":"List of Status Network pre-deposit campaign vault addresses.","keywords":["Status Network","Pre-deposit","Campaign","Vaults"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\uddea Testnet Contracts","permalink":"/overview/general-info/contract-addresses/testnet-contracts"},"next":{"title":"\ud83e\uddea Bridging Testnet","permalink":"/overview/general-info/bridge/bridging-testnet"}}');var r=n(4848),i=n(8453);const o={title:"Pre-Deposit Vault Contracts",description:"List of Status Network pre-deposit campaign vault addresses.",keywords:["Status Network","Pre-deposit","Campaign","Vaults"]},d=void 0,a={},c=[{value:"Vaults",id:"vaults",level:2}];function l(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:["In collaboration with ",(0,r.jsx)(s.a,{href:"https://www.aragon.org/",children:"Aragon"}),", we're running our pre-deposit campaign for Status Network users.\nThis page lists all the important contract addresses of the campaign."]}),"\n",(0,r.jsx)(s.admonition,{type:"note",children:(0,r.jsx)(s.p,{children:"Depending on the vault's token, it's going to be deployed either on Ethereum Mainnet or Linea Mainnet"})}),"\n",(0,r.jsx)(s.h2,{id:"vaults",children:"Vaults"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"SNT Vault"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Address:"})," ",(0,r.jsx)(s.a,{href:"https://etherscan.io/address/0x493957e168accdddf849913c3d60988c652935cd",children:(0,r.jsx)(s.code,{children:"0x493957e168accdddf849913c3d60988c652935cd"})})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Network:"})," Ethereum Mainnet"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Symbol:"})," svSNT"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"LINEA Vault"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Address:"})," ",(0,r.jsx)(s.a,{href:"https://lineascan.build/address/0xb223ca53a53a5931426b601fa01ed2425d8540fb",children:(0,r.jsx)(s.code,{children:"0xb223ca53a53a5931426b601fa01ed2425d8540fb"})})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Network:"})," Linea Mainnet"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Symbol:"})," svLINEA"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"ETH Vault"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Address:"})," ",(0,r.jsx)(s.a,{href:"https://etherscan.io/address/0xc71ec84ee70a54000db3370807bfaf4309a67a1f",children:(0,r.jsx)(s.code,{children:"0xc71ec84ee70a54000db3370807bfaf4309a67a1f"})})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Network:"})," Ethereum Mainnet"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Symbol:"})," svWETH"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"GUSD Vault"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Address:"})," ",(0,r.jsx)(s.a,{href:"https://etherscan.io/address/0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919",children:(0,r.jsx)(s.code,{children:"0x79B4cDb14A31E8B0e21C0120C409Ac14Af35f919"})})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Network:"})," Ethereum Mainnet"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Symbol:"})," N/A, GUSD vault does not issue a receipt token."]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>o,x:()=>d});var t=n(6540);const r={},i=t.createContext(r);function o(e){const s=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c7266e89.132b1209.js b/assets/js/c7266e89.132b1209.js deleted file mode 100644 index fb2f3ba..0000000 --- a/assets/js/c7266e89.132b1209.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2915],{534:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"overview/general-info/contract-addresses/testnet-contracts","title":"Testnet Contracts","description":"Comprehensive list of Status Network testnet contract addresses, including bridge contracts, core infrastructure, and L2 contracts with their purposes and links to block explorers.","source":"@site/docs/overview/general-info/contract-addresses/testnet-contracts.md","sourceDirName":"overview/general-info/contract-addresses","slug":"/overview/general-info/contract-addresses/testnet-contracts","permalink":"/overview/general-info/contract-addresses/testnet-contracts","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/contract-addresses/testnet-contracts.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Testnet Contracts","description":"Comprehensive list of Status Network testnet contract addresses, including bridge contracts, core infrastructure, and L2 contracts with their purposes and links to block explorers.","keywords":["Status Network contracts","testnet addresses","smart contracts","bridge contracts","L1 contracts","L2 contracts","blockchain infrastructure"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\ude99 Tokens","permalink":"/overview/general-info/contract-addresses/tokens"},"next":{"title":"\ud83d\udcb0 Pre-Deposit Vault Contracts","permalink":"/overview/general-info/contract-addresses/pre-deposit"}}');var t=n(4848),c=n(8453);const a={title:"Testnet Contracts",description:"Comprehensive list of Status Network testnet contract addresses, including bridge contracts, core infrastructure, and L2 contracts with their purposes and links to block explorers.",keywords:["Status Network contracts","testnet addresses","smart contracts","bridge contracts","L1 contracts","L2 contracts","blockchain infrastructure"]},d="Testnet Contracts",i={},l=[{value:"Layer 1 Contracts (Sepolia)",id:"layer-1-contracts-sepolia",level:2},{value:"Bridge Contracts",id:"bridge-contracts",level:3},{value:"Core Infrastructure",id:"core-infrastructure",level:3},{value:"Layer 2 Contracts (Status Network Testnet)",id:"layer-2-contracts-status-network-testnet",level:2},{value:"Bridge Contracts",id:"bridge-contracts-1",level:3},{value:"Infrastructure Contracts",id:"infrastructure-contracts",level:3},{value:"Karma Contracts",id:"karma-contracts",level:3},{value:"Utility Contracts",id:"utility-contracts",level:3}];function o(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,c.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"testnet-contracts",children:"Testnet Contracts"})}),"\n",(0,t.jsx)(s.p,{children:"This page lists all the important contract addresses for the Status Network testnet infrastructure."}),"\n",(0,t.jsx)(s.h2,{id:"layer-1-contracts-sepolia",children:"Layer 1 Contracts (Sepolia)"}),"\n",(0,t.jsxs)(s.p,{children:["These contracts are deployed on the Sepolia testnet. You can view them on ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io",children:"Sepolia Etherscan"}),"."]}),"\n",(0,t.jsx)(s.h3,{id:"bridge-contracts",children:"Bridge Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"Rollup Contract"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0x0bf464f24d867ff0b20ae8f9c353a589138d6836",children:(0,t.jsx)(s.code,{children:"0x0Bf464f24D867ff0B20aE8f9C353a589138D6836"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages the L2s validity, DA and messaging from the L1 to L2"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Token Bridge Proxy"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0x01b44C5Ea321f921D93476cf54Aa8460db17a548",children:(0,t.jsx)(s.code,{children:"0x01b44C5Ea321f921D93476cf54Aa8460db17a548"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages token bridging operations on L1"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"core-infrastructure",children:"Core Infrastructure"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Postman"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0xB15725119b917d348FfEB365B43bCDeEbfb65C5d",children:(0,t.jsx)(s.code,{children:"0xB15725119b917d348FfEB365B43bCDeEbfb65C5d"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Handles message passing between L1 and L2"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Data Submission"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0x263d8f55BAc71a42d0A822F46b1eC62Cd4183a8d",children:(0,t.jsx)(s.code,{children:"0x263d8f55BAc71a42d0A822F46b1eC62Cd4183a8d"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages data submission from L2 to L1"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Finalization"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0xb91CB39b3b9F015b0aC88616A463B35568052AEF",children:(0,t.jsx)(s.code,{children:"0xb91CB39b3b9F015b0aC88616A463B35568052AEF"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Handles finalization of L2 blocks on L1"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"layer-2-contracts-status-network-testnet",children:"Layer 2 Contracts (Status Network Testnet)"}),"\n",(0,t.jsxs)(s.p,{children:["These contracts are deployed on the Status Network testnet. You can view them on ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"}),"."]}),"\n",(0,t.jsx)(s.h3,{id:"bridge-contracts-1",children:"Bridge Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"L2 Message Service"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xe74Bd8db0440533F8915042D980AbAA86085821c",children:(0,t.jsx)(s.code,{children:"0xe74Bd8db0440533F8915042D980AbAA86085821c"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages the messaging from L2 to L1"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"L2 Token Bridge Proxy"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xbC7f9571152a8e21942b2aEa4831a27f1149af19",children:(0,t.jsx)(s.code,{children:"0xbC7f9571152a8e21942b2aEa4831a27f1149af19"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages token bridging operations on L2"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"infrastructure-contracts",children:"Infrastructure Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L2 Faucet"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x06338B70F1eAbc60d7A82C083e605C07F78bb878",children:(0,t.jsx)(s.code,{children:"0x06338B70F1eAbc60d7A82C083e605C07F78bb878"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Distributes testnet tokens to users"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L2 Anchoring"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x24B5eD2763129D6cBDEfE32e08558D2095132560",children:(0,t.jsx)(s.code,{children:"0x24B5eD2763129D6cBDEfE32e08558D2095132560"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages state anchoring between L1 and L2"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"karma-contracts",children:"Karma Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"Karma"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x7ec5Dc75D09fAbcD55e76077AFa5d4b77D112fde",children:(0,t.jsx)(s.code,{children:"0x7ec5Dc75D09fAbcD55e76077AFa5d4b77D112fde"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Non-transferable ERC20 native reputation token"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"KarmaTiers"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xc7fCD786a161f42bDaF66E18a67C767C23cFd30C",children:(0,t.jsx)(s.code,{children:"0xc7fCD786a161f42bDaF66E18a67C767C23cFd30C"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Tier levels for gasless transactions"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"KarmaNFT"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xf78d58742840C0ee00b17EE062855392d10a0305",children:(0,t.jsx)(s.code,{children:"0xf78d58742840C0ee00b17EE062855392d10a0305"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Soulbound Karma NFT"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"StakeManager"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x5cDf1646E4c1D21eE94DED1DA8da3Ca450dc96D1",children:(0,t.jsx)(s.code,{children:"0x5cDf1646E4c1D21eE94DED1DA8da3Ca450dc96D1"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: SNT Staking contract"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"VaultFactory"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xddDcd43a0B0dA865decf3e4Ae71FbBE3e2DfFF14",children:(0,t.jsx)(s.code,{children:"0xddDcd43a0B0dA865decf3e4Ae71FbBE3e2DfFF14"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Factory for creating self-custody vaults that plug into StakeManager"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"utility-contracts",children:"Utility Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Multicall3"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xcA11bde05977b3631167028862bE2a173976CA11",children:(0,t.jsx)(s.code,{children:"0xcA11bde05977b3631167028862bE2a173976CA11"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Batching of multiple calls to the chain from one request"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"deterministic-deployment-proxy"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x4e59b44847b379578588920cA78FbF26c0B4956C",children:(0,t.jsx)(s.code,{children:"0x4e59b44847b379578588920cA78FbF26c0B4956C"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: CREATE2 util contract used by popular frameworks like Hardhat and similar behind the scenes"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"safe-singleton-factory"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7",children:(0,t.jsx)(s.code,{children:"0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Singleton factory used by Safe related contracts"}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,c.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>a,x:()=>d});var r=n(6540);const t={},c=r.createContext(t);function a(e){const s=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),r.createElement(c.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c7266e89.48c52ea8.js b/assets/js/c7266e89.48c52ea8.js new file mode 100644 index 0000000..9c2d3ef --- /dev/null +++ b/assets/js/c7266e89.48c52ea8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2915],{534:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"overview/general-info/contract-addresses/testnet-contracts","title":"Testnet Contracts: Core Status Network Addresses","description":"Official list of testnet contract addresses for Status Network. Access bridge, infrastructure, and core reputation contracts for developer integration.","source":"@site/docs/overview/general-info/contract-addresses/testnet-contracts.md","sourceDirName":"overview/general-info/contract-addresses","slug":"/overview/general-info/contract-addresses/testnet-contracts","permalink":"/overview/general-info/contract-addresses/testnet-contracts","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/contract-addresses/testnet-contracts.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Testnet Contracts: Core Status Network Addresses","description":"Official list of testnet contract addresses for Status Network. Access bridge, infrastructure, and core reputation contracts for developer integration.","keywords":["Status Network contracts","testnet addresses","smart contracts","bridge contracts","L1 contracts","L2 contracts","blockchain infrastructure"]},"sidebar":"homeSidebar","previous":{"title":"\ud83e\ude99 Tokens","permalink":"/overview/general-info/contract-addresses/tokens"},"next":{"title":"\ud83d\udcb0 Pre-Deposit Vault Contracts","permalink":"/overview/general-info/contract-addresses/pre-deposit"}}');var t=n(4848),c=n(8453);const a={title:"Testnet Contracts: Core Status Network Addresses",description:"Official list of testnet contract addresses for Status Network. Access bridge, infrastructure, and core reputation contracts for developer integration.",keywords:["Status Network contracts","testnet addresses","smart contracts","bridge contracts","L1 contracts","L2 contracts","blockchain infrastructure"]},d="Testnet Contracts",i={},l=[{value:"Layer 1 Contracts (Sepolia)",id:"layer-1-contracts-sepolia",level:2},{value:"Bridge Contracts",id:"bridge-contracts",level:3},{value:"Core Infrastructure",id:"core-infrastructure",level:3},{value:"Layer 2 Contracts (Status Network Testnet)",id:"layer-2-contracts-status-network-testnet",level:2},{value:"Bridge Contracts",id:"bridge-contracts-1",level:3},{value:"Infrastructure Contracts",id:"infrastructure-contracts",level:3},{value:"Karma Contracts",id:"karma-contracts",level:3},{value:"Utility Contracts",id:"utility-contracts",level:3}];function o(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,c.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"testnet-contracts",children:"Testnet Contracts"})}),"\n",(0,t.jsx)(s.p,{children:"This page lists all the important contract addresses for the Status Network testnet infrastructure."}),"\n",(0,t.jsx)(s.h2,{id:"layer-1-contracts-sepolia",children:"Layer 1 Contracts (Sepolia)"}),"\n",(0,t.jsxs)(s.p,{children:["These contracts are deployed on the Sepolia testnet. You can view them on ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io",children:"Sepolia Etherscan"}),"."]}),"\n",(0,t.jsx)(s.h3,{id:"bridge-contracts",children:"Bridge Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"Rollup Contract"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0x0bf464f24d867ff0b20ae8f9c353a589138d6836",children:(0,t.jsx)(s.code,{children:"0x0Bf464f24D867ff0B20aE8f9C353a589138D6836"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages the L2s validity, DA and messaging from the L1 to L2"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Token Bridge Proxy"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0x01b44C5Ea321f921D93476cf54Aa8460db17a548",children:(0,t.jsx)(s.code,{children:"0x01b44C5Ea321f921D93476cf54Aa8460db17a548"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages token bridging operations on L1"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"core-infrastructure",children:"Core Infrastructure"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Postman"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0xB15725119b917d348FfEB365B43bCDeEbfb65C5d",children:(0,t.jsx)(s.code,{children:"0xB15725119b917d348FfEB365B43bCDeEbfb65C5d"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Handles message passing between L1 and L2"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Data Submission"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0x263d8f55BAc71a42d0A822F46b1eC62Cd4183a8d",children:(0,t.jsx)(s.code,{children:"0x263d8f55BAc71a42d0A822F46b1eC62Cd4183a8d"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages data submission from L2 to L1"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L1 Finalization"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepolia.etherscan.io/address/0xb91CB39b3b9F015b0aC88616A463B35568052AEF",children:(0,t.jsx)(s.code,{children:"0xb91CB39b3b9F015b0aC88616A463B35568052AEF"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Handles finalization of L2 blocks on L1"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"layer-2-contracts-status-network-testnet",children:"Layer 2 Contracts (Status Network Testnet)"}),"\n",(0,t.jsxs)(s.p,{children:["These contracts are deployed on the Status Network testnet. You can view them on ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"}),"."]}),"\n",(0,t.jsx)(s.h3,{id:"bridge-contracts-1",children:"Bridge Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"L2 Message Service"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xe74Bd8db0440533F8915042D980AbAA86085821c",children:(0,t.jsx)(s.code,{children:"0xe74Bd8db0440533F8915042D980AbAA86085821c"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages the messaging from L2 to L1"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"L2 Token Bridge Proxy"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xbC7f9571152a8e21942b2aEa4831a27f1149af19",children:(0,t.jsx)(s.code,{children:"0xbC7f9571152a8e21942b2aEa4831a27f1149af19"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages token bridging operations on L2"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"infrastructure-contracts",children:"Infrastructure Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L2 Faucet"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x06338B70F1eAbc60d7A82C083e605C07F78bb878",children:(0,t.jsx)(s.code,{children:"0x06338B70F1eAbc60d7A82C083e605C07F78bb878"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Distributes testnet tokens to users"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"L2 Anchoring"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x24B5eD2763129D6cBDEfE32e08558D2095132560",children:(0,t.jsx)(s.code,{children:"0x24B5eD2763129D6cBDEfE32e08558D2095132560"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Manages state anchoring between L1 and L2"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"karma-contracts",children:"Karma Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"Karma"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x7ec5Dc75D09fAbcD55e76077AFa5d4b77D112fde",children:(0,t.jsx)(s.code,{children:"0x7ec5Dc75D09fAbcD55e76077AFa5d4b77D112fde"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Non-transferable ERC20 native reputation token"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"KarmaTiers"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xc7fCD786a161f42bDaF66E18a67C767C23cFd30C",children:(0,t.jsx)(s.code,{children:"0xc7fCD786a161f42bDaF66E18a67C767C23cFd30C"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Tier levels for gasless transactions"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"KarmaNFT"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xf78d58742840C0ee00b17EE062855392d10a0305",children:(0,t.jsx)(s.code,{children:"0xf78d58742840C0ee00b17EE062855392d10a0305"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Soulbound Karma NFT"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"StakeManager"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x5cDf1646E4c1D21eE94DED1DA8da3Ca450dc96D1",children:(0,t.jsx)(s.code,{children:"0x5cDf1646E4c1D21eE94DED1DA8da3Ca450dc96D1"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: SNT Staking contract"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"VaultFactory"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xddDcd43a0B0dA865decf3e4Ae71FbBE3e2DfFF14",children:(0,t.jsx)(s.code,{children:"0xddDcd43a0B0dA865decf3e4Ae71FbBE3e2DfFF14"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Factory for creating self-custody vaults that plug into StakeManager"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"utility-contracts",children:"Utility Contracts"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Multicall3"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0xcA11bde05977b3631167028862bE2a173976CA11",children:(0,t.jsx)(s.code,{children:"0xcA11bde05977b3631167028862bE2a173976CA11"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Batching of multiple calls to the chain from one request"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"deterministic-deployment-proxy"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x4e59b44847b379578588920cA78FbF26c0B4956C",children:(0,t.jsx)(s.code,{children:"0x4e59b44847b379578588920cA78FbF26c0B4956C"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: CREATE2 util contract used by popular frameworks like Hardhat and similar behind the scenes"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"safe-singleton-factory"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Address: ",(0,t.jsx)(s.a,{href:"https://sepoliascan.status.network/address/0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7",children:(0,t.jsx)(s.code,{children:"0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7"})})]}),"\n",(0,t.jsx)(s.li,{children:"Purpose: Singleton factory used by Safe related contracts"}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,c.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>a,x:()=>d});var r=n(6540);const t={},c=r.createContext(t);function a(e){const s=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),r.createElement(c.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/caaf0796.473ff595.js b/assets/js/caaf0796.473ff595.js deleted file mode 100644 index e084152..0000000 --- a/assets/js/caaf0796.473ff595.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2320],{8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var r=n(6540);const i={},s=r.createContext(i);function o(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},9006:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-remix","title":"Using Remix with Status Network","description":"Learn how to deploy smart contracts on Status Network using Remix IDE. Beginner-friendly guide with step-by-step instructions for contract deployment and interaction.","source":"@site/docs/build-for-karma/deploying-contracts/using-remix.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-remix","permalink":"/build-for-karma/deploying-contracts/using-remix","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-remix.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"Using Remix with Status Network","description":"Learn how to deploy smart contracts on Status Network using Remix IDE. Beginner-friendly guide with step-by-step instructions for contract deployment and interaction.","keywords":["Remix IDE","smart contract deployment","Status Network development","blockchain tutorial","web3 development","solidity"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"\u2692\ufe0f Using Foundry","permalink":"/build-for-karma/deploying-contracts/using-foundry"},"next":{"title":"\ud83c\udfd7 Using Scaffold-ETH 2","permalink":"/build-for-karma/deploying-contracts/using-se2"}}');var i=n(4848),s=n(8453);const o={title:"Using Remix with Status Network",description:"Learn how to deploy smart contracts on Status Network using Remix IDE. Beginner-friendly guide with step-by-step instructions for contract deployment and interaction.",keywords:["Remix IDE","smart contract deployment","Status Network development","blockchain tutorial","web3 development","solidity"]},l="Using Remix to Deploy Smart Contracts",c={},a=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Steps",id:"steps",level:2},{value:"1. Open Remix IDE",id:"1-open-remix-ide",level:3},{value:"2. Create a New File",id:"2-create-a-new-file",level:3},{value:"3. Write the Smart Contract",id:"3-write-the-smart-contract",level:3},{value:"4. Compile the Contract",id:"4-compile-the-contract",level:3},{value:"5. Deploy the Contract",id:"5-deploy-the-contract",level:3},{value:"6. Interact with Your Contract",id:"6-interact-with-your-contract",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Common Issues",id:"common-issues",level:3},{value:"Support",id:"support",level:2},{value:"Additional Resources",id:"additional-resources",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"using-remix-to-deploy-smart-contracts",children:"Using Remix to Deploy Smart Contracts"})}),"\n",(0,i.jsx)(t.p,{children:"This tutorial will guide you through deploying a smart contract on Status Network testnet using the Remix IDE. Remix is a browser-based IDE that's perfect for quick development and testing."}),"\n",(0,i.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsx)(t.p,{children:"Before you begin, ensure you have:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Web Browser"}),": A modern web browser like Chrome or Firefox"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"MetaMask"}),": Install the ",(0,i.jsx)(t.a,{href:"https://metamask.io",children:"MetaMask"})," browser extension"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Testnet ETH"}),": You'll need Status Network testnet ETH","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Get Status Network testnet ETH from our ",(0,i.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Network Configuration"}),": Add Status Network testnet to MetaMask following our ",(0,i.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Network guide"})]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,i.jsx)(t.h3,{id:"1-open-remix-ide",children:"1. Open Remix IDE"}),"\n",(0,i.jsxs)(t.p,{children:["Visit ",(0,i.jsx)(t.a,{href:"https://remix.ethereum.org",children:"remix.ethereum.org"})," in your browser."]}),"\n",(0,i.jsx)(t.h3,{id:"2-create-a-new-file",children:"2. Create a New File"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:'Click the "File Explorer" icon (first icon on the left sidebar)'}),"\n",(0,i.jsx)(t.li,{children:'Click the "+" button to create a new file'}),"\n",(0,i.jsxs)(t.li,{children:["Name it ",(0,i.jsx)(t.code,{children:"HelloWorld.sol"})]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"3-write-the-smart-contract",children:"3. Write the Smart Contract"}),"\n",(0,i.jsxs)(t.p,{children:["Copy and paste the following code into ",(0,i.jsx)(t.code,{children:"HelloWorld.sol"}),":"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\ncontract HelloWorld {\n string public greet = "Hello, Status Network!";\n\n function setGreet(string memory _greet) public {\n greet = _greet;\n }\n\n function getGreet() public view returns (string memory) {\n return greet;\n }\n}\n'})}),"\n",(0,i.jsx)(t.h3,{id:"4-compile-the-contract",children:"4. Compile the Contract"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:'Click the "Solidity Compiler" icon (second icon on the left sidebar)'}),"\n",(0,i.jsx)(t.li,{children:'Select compiler version "0.8.24"'}),"\n",(0,i.jsx)(t.li,{children:'Select "Advanced Configurations", select evm version "paris"'}),"\n",(0,i.jsx)(t.li,{children:'Click "Compile HelloWorld.sol"'}),"\n",(0,i.jsx)(t.li,{children:"Ensure compilation succeeds (you'll see a green checkmark)"}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"5-deploy-the-contract",children:"5. Deploy the Contract"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:'Click the "Deploy & Run Transactions" icon (fourth icon on the left sidebar)'}),"\n",(0,i.jsx)(t.li,{children:'In the "Environment" dropdown, select "Injected Provider - MetaMask"'}),"\n",(0,i.jsx)(t.li,{children:"MetaMask will prompt you to connect - ensure Status Network testnet is selected"}),"\n",(0,i.jsx)(t.li,{children:'Click "Deploy"'}),"\n",(0,i.jsx)(t.li,{children:"Confirm the transaction in MetaMask"}),"\n",(0,i.jsx)(t.li,{children:"Wait for the transaction to be confirmed"}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"6-interact-with-your-contract",children:"6. Interact with Your Contract"}),"\n",(0,i.jsx)(t.p,{children:'Once deployed, you\'ll see your contract under "Deployed Contracts":'}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:"Expand the contract interface"}),"\n",(0,i.jsxs)(t.li,{children:["You can:","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:'Click "greet" to read the current greeting'}),"\n",(0,i.jsx)(t.li,{children:'Enter a new greeting in the "setGreet" field and click the button to update it'}),"\n",(0,i.jsx)(t.li,{children:'Click "getGreet" to read the greeting again'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,i.jsx)(t.h3,{id:"common-issues",children:"Common Issues"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Transaction Failed"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Check that you're connected to Status Network testnet"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Contract Not Found"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Wait a few minutes for the explorer to index your contract"}),"\n",(0,i.jsx)(t.li,{children:"Double-check the contract address"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Compilation Errors"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Verify the compiler version matches the pragma statement"}),"\n",(0,i.jsx)(t.li,{children:"Check for any syntax errors highlighted in Remix"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,i.jsx)(t.p,{children:"If you encounter any issues:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Join our ",(0,i.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})]}),"\n",(0,i.jsxs)(t.li,{children:["View our ",(0,i.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"additional-resources",children:"Additional Resources"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://remix-ide.readthedocs.io/",children:"Remix Documentation"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/caaf0796.d1078135.js b/assets/js/caaf0796.d1078135.js new file mode 100644 index 0000000..318cb8b --- /dev/null +++ b/assets/js/caaf0796.d1078135.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2320],{8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var r=n(6540);const i={},s=r.createContext(i);function o(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},9006:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-remix","title":"Using Remix IDE: Deploy Gasless Contracts on Status","description":"A beginner-friendly guide to deploying Solidity contracts on Status Network via Remix IDE. Setup your wallet and interact with our gasless L2 testnet.","source":"@site/docs/build-for-karma/deploying-contracts/using-remix.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-remix","permalink":"/build-for-karma/deploying-contracts/using-remix","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-remix.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Using Remix IDE: Deploy Gasless Contracts on Status","description":"A beginner-friendly guide to deploying Solidity contracts on Status Network via Remix IDE. Setup your wallet and interact with our gasless L2 testnet.","keywords":["Remix IDE","smart contract deployment","Status Network development","blockchain tutorial","web3 development","solidity"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"\u2692\ufe0f Using Foundry","permalink":"/build-for-karma/deploying-contracts/using-foundry"},"next":{"title":"\ud83c\udfd7 Using Scaffold-ETH 2","permalink":"/build-for-karma/deploying-contracts/using-se2"}}');var i=n(4848),s=n(8453);const o={title:"Using Remix IDE: Deploy Gasless Contracts on Status",description:"A beginner-friendly guide to deploying Solidity contracts on Status Network via Remix IDE. Setup your wallet and interact with our gasless L2 testnet.",keywords:["Remix IDE","smart contract deployment","Status Network development","blockchain tutorial","web3 development","solidity"]},l="Using Remix to Deploy Smart Contracts",c={},a=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Steps",id:"steps",level:2},{value:"1. Open Remix IDE",id:"1-open-remix-ide",level:3},{value:"2. Create a New File",id:"2-create-a-new-file",level:3},{value:"3. Write the Smart Contract",id:"3-write-the-smart-contract",level:3},{value:"4. Compile the Contract",id:"4-compile-the-contract",level:3},{value:"5. Deploy the Contract",id:"5-deploy-the-contract",level:3},{value:"6. Interact with Your Contract",id:"6-interact-with-your-contract",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Common Issues",id:"common-issues",level:3},{value:"Support",id:"support",level:2},{value:"Additional Resources",id:"additional-resources",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"using-remix-to-deploy-smart-contracts",children:"Using Remix to Deploy Smart Contracts"})}),"\n",(0,i.jsx)(t.p,{children:"This tutorial will guide you through deploying a smart contract on Status Network testnet using the Remix IDE. Remix is a browser-based IDE that's perfect for quick development and testing."}),"\n",(0,i.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsx)(t.p,{children:"Before you begin, ensure you have:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Web Browser"}),": A modern web browser like Chrome or Firefox"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"MetaMask"}),": Install the ",(0,i.jsx)(t.a,{href:"https://metamask.io",children:"MetaMask"})," browser extension"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Testnet ETH"}),": You'll need Status Network testnet ETH","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Get Status Network testnet ETH from our ",(0,i.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Network Configuration"}),": Add Status Network testnet to MetaMask following our ",(0,i.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Network guide"})]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,i.jsx)(t.h3,{id:"1-open-remix-ide",children:"1. Open Remix IDE"}),"\n",(0,i.jsxs)(t.p,{children:["Visit ",(0,i.jsx)(t.a,{href:"https://remix.ethereum.org",children:"remix.ethereum.org"})," in your browser."]}),"\n",(0,i.jsx)(t.h3,{id:"2-create-a-new-file",children:"2. Create a New File"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:'Click the "File Explorer" icon (first icon on the left sidebar)'}),"\n",(0,i.jsx)(t.li,{children:'Click the "+" button to create a new file'}),"\n",(0,i.jsxs)(t.li,{children:["Name it ",(0,i.jsx)(t.code,{children:"HelloWorld.sol"})]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"3-write-the-smart-contract",children:"3. Write the Smart Contract"}),"\n",(0,i.jsxs)(t.p,{children:["Copy and paste the following code into ",(0,i.jsx)(t.code,{children:"HelloWorld.sol"}),":"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\ncontract HelloWorld {\n string public greet = "Hello, Status Network!";\n\n function setGreet(string memory _greet) public {\n greet = _greet;\n }\n\n function getGreet() public view returns (string memory) {\n return greet;\n }\n}\n'})}),"\n",(0,i.jsx)(t.h3,{id:"4-compile-the-contract",children:"4. Compile the Contract"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:'Click the "Solidity Compiler" icon (second icon on the left sidebar)'}),"\n",(0,i.jsx)(t.li,{children:'Select compiler version "0.8.24"'}),"\n",(0,i.jsx)(t.li,{children:'Select "Advanced Configurations", select evm version "paris"'}),"\n",(0,i.jsx)(t.li,{children:'Click "Compile HelloWorld.sol"'}),"\n",(0,i.jsx)(t.li,{children:"Ensure compilation succeeds (you'll see a green checkmark)"}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"5-deploy-the-contract",children:"5. Deploy the Contract"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:'Click the "Deploy & Run Transactions" icon (fourth icon on the left sidebar)'}),"\n",(0,i.jsx)(t.li,{children:'In the "Environment" dropdown, select "Injected Provider - MetaMask"'}),"\n",(0,i.jsx)(t.li,{children:"MetaMask will prompt you to connect - ensure Status Network testnet is selected"}),"\n",(0,i.jsx)(t.li,{children:'Click "Deploy"'}),"\n",(0,i.jsx)(t.li,{children:"Confirm the transaction in MetaMask"}),"\n",(0,i.jsx)(t.li,{children:"Wait for the transaction to be confirmed"}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"6-interact-with-your-contract",children:"6. Interact with Your Contract"}),"\n",(0,i.jsx)(t.p,{children:'Once deployed, you\'ll see your contract under "Deployed Contracts":'}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:"Expand the contract interface"}),"\n",(0,i.jsxs)(t.li,{children:["You can:","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:'Click "greet" to read the current greeting'}),"\n",(0,i.jsx)(t.li,{children:'Enter a new greeting in the "setGreet" field and click the button to update it'}),"\n",(0,i.jsx)(t.li,{children:'Click "getGreet" to read the greeting again'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,i.jsx)(t.h3,{id:"common-issues",children:"Common Issues"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Transaction Failed"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Check that you're connected to Status Network testnet"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Contract Not Found"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Wait a few minutes for the explorer to index your contract"}),"\n",(0,i.jsx)(t.li,{children:"Double-check the contract address"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Compilation Errors"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Verify the compiler version matches the pragma statement"}),"\n",(0,i.jsx)(t.li,{children:"Check for any syntax errors highlighted in Remix"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,i.jsx)(t.p,{children:"If you encounter any issues:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Join our ",(0,i.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})]}),"\n",(0,i.jsxs)(t.li,{children:["View our ",(0,i.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"additional-resources",children:"Additional Resources"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://remix-ide.readthedocs.io/",children:"Remix Documentation"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://sepoliascan.status.network",children:"Status Network Explorer"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/cab48688.164d373d.js b/assets/js/cab48688.164d373d.js new file mode 100644 index 0000000..2db2ddf --- /dev/null +++ b/assets/js/cab48688.164d373d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9267],{6266:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"tools/rpc/json-rpc","title":"JSON-RPC API: Status Network Extensions & Reference","description":"Status Network JSON-RPC API reference. Explore custom extensions for gasless transactions, RLN proofs, and Karma-aware fee estimation for developers.","source":"@site/docs/tools/rpc/json-rpc.md","sourceDirName":"tools/rpc","slug":"/tools/rpc/json-rpc","permalink":"/tools/rpc/json-rpc","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/rpc/json-rpc.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"JSON-RPC API: Status Network Extensions & Reference","description":"Status Network JSON-RPC API reference. Explore custom extensions for gasless transactions, RLN proofs, and Karma-aware fee estimation for developers.","keywords":["Status Network","JSON-RPC","Linea","EIP-1559","eth_estimateGas","linea_estimateGas","Karma","gasless"]},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udd0e Block Explorers","permalink":"/tools/core-infrastructure/block-explorers"},"next":{"title":"\ud83c\udf10 Running an RPC Node","permalink":"/tools/rpc/running-an-rpc"}}');var r=t(4848),i=t(8453);const a={title:"JSON-RPC API: Status Network Extensions & Reference",description:"Status Network JSON-RPC API reference. Explore custom extensions for gasless transactions, RLN proofs, and Karma-aware fee estimation for developers.",keywords:["Status Network","JSON-RPC","Linea","EIP-1559","eth_estimateGas","linea_estimateGas","Karma","gasless"]},o="JSON-RPC API",c={},d=[{value:"Status Network extensions",id:"status-network-extensions",level:2},{value:"linea_estimateGas",id:"linea_estimategas",level:3},{value:"Status Network RPC differences",id:"status-network-rpc-differences",level:3},{value:"Additional resources",id:"additional-resources",level:3}];function l(e){const s={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.header,{children:(0,r.jsx)(s.h1,{id:"json-rpc-api",children:"JSON-RPC API"})}),"\n",(0,r.jsxs)(s.p,{children:["Status Network is based on Linea zkEVM, meaning ",(0,r.jsx)(s.strong,{children:"most JSON-RPC methods behave exactly like a standard EVM node"}),"."]}),"\n",(0,r.jsx)(s.p,{children:"For the canonical list of supported methods and their standard semantics, refer to the following official documentations:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"https://ethereum.github.io/execution-apis/",children:"Ethereum JSON-RPC API Reference"})})," \u2014 standard Ethereum RPC methods"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"https://docs.linea.build/api/reference",children:"Linea JSON-RPC API Reference"})})," \u2014 Linea-specific methods, including ",(0,r.jsx)(s.code,{children:"linea_estimateGas"})]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"status-network-extensions",children:"Status Network extensions"}),"\n",(0,r.jsx)(s.p,{children:"Status Network extends the standard Linea JSON-RPC with Karma-aware fee estimation:"}),"\n",(0,r.jsx)(s.h3,{id:"linea_estimategas",children:(0,r.jsx)(s.code,{children:"linea_estimateGas"})}),"\n",(0,r.jsxs)(s.p,{children:["On Linea, ",(0,r.jsx)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:(0,r.jsx)(s.code,{children:"linea_estimateGas"})})," is the recommended way to estimate gas, returning ",(0,r.jsx)(s.code,{children:"gasLimit"}),", ",(0,r.jsx)(s.code,{children:"baseFeePerGas"}),", and ",(0,r.jsx)(s.code,{children:"priorityFeePerGas"})," in a single call."]}),"\n",(0,r.jsxs)(s.p,{children:["Status Network extends ",(0,r.jsx)(s.code,{children:"linea_estimateGas"})," with Karma-aware behavior:"]}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Gasless users"}),": Returns zero ",(0,r.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,r.jsx)(s.code,{children:"priorityFeePerGas"})," for eligible users with available Karma quota"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Deny-listed users"}),": Applies a premium multiplier to fee fields for users on the deny list"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"status-network-rpc-differences",children:"Status Network RPC differences"}),"\n",(0,r.jsxs)(s.p,{children:["On base Linea, ",(0,r.jsx)(s.code,{children:"linea_estimateGas"})," is already the recommended method because it returns fee fields that account for L1 verification costs and data compression - something ",(0,r.jsx)(s.code,{children:"eth_estimateGas"})," and other ",(0,r.jsx)(s.code,{children:"eth_"})," namespace calls do not provide.\nStatus Network's fork extends ",(0,r.jsx)(s.code,{children:"linea_estimateGas"})," further to be Karma-aware; all other JSON-RPC methods retain their standard semantics."]}),"\n",(0,r.jsxs)(s.p,{children:["That means using the traditional fee flow with ",(0,r.jsx)(s.code,{children:"eth_"})," methods (for example ",(0,r.jsx)(s.code,{children:"eth_gasPrice"}),", ",(0,r.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"}),", or ",(0,r.jsx)(s.code,{children:"eth_feeHistory"}),") can lead to ",(0,r.jsx)(s.strong,{children:"inaccurate"})," fee suggestions: they miss both Linea's L2-specific pricing and Status Network's Karma adjustments."]}),"\n",(0,r.jsxs)(s.p,{children:["Use ",(0,r.jsx)(s.code,{children:"linea_estimateGas"})," as the single source of truth for ",(0,r.jsx)(s.code,{children:"gasLimit"}),", ",(0,r.jsx)(s.code,{children:"baseFeePerGas"}),", and ",(0,r.jsx)(s.code,{children:"priorityFeePerGas"})," on Status Network."]}),"\n",(0,r.jsxs)(s.p,{children:["See ",(0,r.jsx)(s.a,{href:"https://docs.linea.build/network/how-to/gas-fees",children:"Linea's gas-fee guide"})," and ",(0,r.jsxs)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:["Linea's ",(0,r.jsx)(s.code,{children:"linea_estimateGas"})," reference"]})," for the base Linea behavior."]}),"\n",(0,r.jsx)(s.admonition,{type:"info",children:(0,r.jsxs)(s.p,{children:["For detailed integration guidance including code examples, migration steps, and common pitfalls, see the ",(0,r.jsx)(s.a,{href:"/build-for-karma/guides",children:"Using Karma"})," guide."]})}),"\n",(0,r.jsx)(s.h3,{id:"additional-resources",children:"Additional resources"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"https://docs.linea.build/network/how-to/gas-fees",children:"Linea's gas-fee guide"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsxs)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:["Linea's ",(0,r.jsx)(s.code,{children:"linea_estimateGas"})," reference"]})}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," \u2014 how Karma impacts gas fees"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"/overview/general-info/gasless-transactions",children:"Gasless Transactions"})," \u2014 technical details of the RLN-based gasless system"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"Ethereum Differences"})," \u2014 opcode, precompile, and transaction type differences from Ethereum mainnet"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,s,t)=>{t.d(s,{R:()=>a,x:()=>o});var n=t(6540);const r={},i=n.createContext(r);function a(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cab48688.d1e8cc91.js b/assets/js/cab48688.d1e8cc91.js deleted file mode 100644 index afc3bb3..0000000 --- a/assets/js/cab48688.d1e8cc91.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9267],{6266:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"tools/rpc/json-rpc","title":"JSON-RPC API","description":"Status Network JSON-RPC API reference for builders.","source":"@site/docs/tools/rpc/json-rpc.md","sourceDirName":"tools/rpc","slug":"/tools/rpc/json-rpc","permalink":"/tools/rpc/json-rpc","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/rpc/json-rpc.md","tags":[],"version":"current","lastUpdatedAt":1774460236000,"frontMatter":{"title":"JSON-RPC API","description":"Status Network JSON-RPC API reference for builders.","keywords":["Status Network","JSON-RPC","Linea","EIP-1559","eth_estimateGas","linea_estimateGas","Karma","gasless"]},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udd0e Block Explorers","permalink":"/tools/core-infrastructure/block-explorers"},"next":{"title":"\ud83c\udf10 Running an RPC Node","permalink":"/tools/rpc/running-an-rpc"}}');var i=t(4848),r=t(8453);const a={title:"JSON-RPC API",description:"Status Network JSON-RPC API reference for builders.",keywords:["Status Network","JSON-RPC","Linea","EIP-1559","eth_estimateGas","linea_estimateGas","Karma","gasless"]},o=void 0,c={},d=[{value:"Status Network extensions",id:"status-network-extensions",level:2},{value:"linea_estimateGas",id:"linea_estimategas",level:3},{value:"Status Network RPC differences",id:"status-network-rpc-differences",level:3},{value:"Additional resources",id:"additional-resources",level:3}];function l(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(s.p,{children:["Status Network is based on Linea zkEVM, meaning ",(0,i.jsx)(s.strong,{children:"most JSON-RPC methods behave exactly like a standard EVM node"}),"."]}),"\n",(0,i.jsx)(s.p,{children:"For the canonical list of supported methods and their standard semantics, refer to the following official documentations:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.a,{href:"https://ethereum.github.io/execution-apis/",children:"Ethereum JSON-RPC API Reference"})})," \u2014 standard Ethereum RPC methods"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.a,{href:"https://docs.linea.build/api/reference",children:"Linea JSON-RPC API Reference"})})," \u2014 Linea-specific methods, including ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})]}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"status-network-extensions",children:"Status Network extensions"}),"\n",(0,i.jsx)(s.p,{children:"Status Network extends the standard Linea JSON-RPC with Karma-aware fee estimation:"}),"\n",(0,i.jsx)(s.h3,{id:"linea_estimategas",children:(0,i.jsx)(s.code,{children:"linea_estimateGas"})}),"\n",(0,i.jsxs)(s.p,{children:["On Linea, ",(0,i.jsx)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:(0,i.jsx)(s.code,{children:"linea_estimateGas"})})," is the recommended way to estimate gas, returning ",(0,i.jsx)(s.code,{children:"gasLimit"}),", ",(0,i.jsx)(s.code,{children:"baseFeePerGas"}),", and ",(0,i.jsx)(s.code,{children:"priorityFeePerGas"})," in a single call."]}),"\n",(0,i.jsxs)(s.p,{children:["Status Network extends ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," with Karma-aware behavior:"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Gasless users"}),": Returns zero ",(0,i.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,i.jsx)(s.code,{children:"priorityFeePerGas"})," for eligible users with available Karma quota"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Deny-listed users"}),": Applies a premium multiplier to fee fields for users on the deny list"]}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"status-network-rpc-differences",children:"Status Network RPC differences"}),"\n",(0,i.jsxs)(s.p,{children:["On base Linea, ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," is already the recommended method because it returns fee fields that account for L1 verification costs and data compression - something ",(0,i.jsx)(s.code,{children:"eth_estimateGas"})," and other ",(0,i.jsx)(s.code,{children:"eth_"})," namespace calls do not provide.\nStatus Network's fork extends ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," further to be Karma-aware; all other JSON-RPC methods retain their standard semantics."]}),"\n",(0,i.jsxs)(s.p,{children:["That means using the traditional fee flow with ",(0,i.jsx)(s.code,{children:"eth_"})," methods (for example ",(0,i.jsx)(s.code,{children:"eth_gasPrice"}),", ",(0,i.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"}),", or ",(0,i.jsx)(s.code,{children:"eth_feeHistory"}),") can lead to ",(0,i.jsx)(s.strong,{children:"inaccurate"})," fee suggestions: they miss both Linea's L2-specific pricing and Status Network's Karma adjustments."]}),"\n",(0,i.jsxs)(s.p,{children:["Use ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," as the single source of truth for ",(0,i.jsx)(s.code,{children:"gasLimit"}),", ",(0,i.jsx)(s.code,{children:"baseFeePerGas"}),", and ",(0,i.jsx)(s.code,{children:"priorityFeePerGas"})," on Status Network."]}),"\n",(0,i.jsxs)(s.p,{children:["See ",(0,i.jsx)(s.a,{href:"https://docs.linea.build/network/how-to/gas-fees",children:"Linea's gas-fee guide"})," and ",(0,i.jsxs)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:["Linea's ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," reference"]})," for the base Linea behavior."]}),"\n",(0,i.jsx)(s.admonition,{type:"info",children:(0,i.jsxs)(s.p,{children:["For detailed integration guidance including code examples, migration steps, and common pitfalls, see the ",(0,i.jsx)(s.a,{href:"/build-for-karma/guides",children:"Using Karma"})," guide."]})}),"\n",(0,i.jsx)(s.h3,{id:"additional-resources",children:"Additional resources"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:(0,i.jsx)(s.a,{href:"https://docs.linea.build/network/how-to/gas-fees",children:"Linea's gas-fee guide"})}),"\n",(0,i.jsx)(s.li,{children:(0,i.jsxs)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:["Linea's ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," reference"]})}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.a,{href:"/overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," \u2014 how Karma impacts gas fees"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.a,{href:"/overview/general-info/gasless-transactions",children:"Gasless Transactions"})," \u2014 technical details of the RLN-based gasless system"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.a,{href:"/tools/ethereum-compatibility/ethereum-differences",children:"Ethereum Differences"})," \u2014 opcode, precompile, and transaction type differences from Ethereum mainnet"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,s,t)=>{t.d(s,{R:()=>a,x:()=>o});var n=t(6540);const i={},r=n.createContext(i);function a(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cef817d0.1245741a.js b/assets/js/cef817d0.1245741a.js deleted file mode 100644 index 6a01ec8..0000000 --- a/assets/js/cef817d0.1245741a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[6093],{6521:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"tools/ethereum-compatibility/ethereum-differences","title":"Differences between Ethereum and Status Network","description":"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.","source":"@site/docs/tools/ethereum-compatibility/ethereum-differences.md","sourceDirName":"tools/ethereum-compatibility","slug":"/tools/ethereum-compatibility/ethereum-differences","permalink":"/tools/ethereum-compatibility/ethereum-differences","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/ethereum-compatibility/ethereum-differences.md","tags":[],"version":"current","lastUpdatedAt":1774460236000,"sidebarPosition":1,"frontMatter":{"title":"Differences between Ethereum and Status Network","description":"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.","keywords":["Status Network","Ethereum differences","EVM compatibility","opcodes","precompiles","Linea zkEVM"],"sidebar_position":1},"sidebar":"toolsSidebar","previous":{"title":"\ud83c\udf10 Running an RPC Node","permalink":"/tools/rpc/running-an-rpc"},"next":{"title":"\ud83e\udd1d Infrastructure Partners","permalink":"/tools/infrastructure"}}');var r=s(4848),o=s(8453);const i={title:"Differences between Ethereum and Status Network",description:"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.",keywords:["Status Network","Ethereum differences","EVM compatibility","opcodes","precompiles","Linea zkEVM"],sidebar_position:1},d=void 0,a={},c=[{value:"EVM opcodes",id:"evm-opcodes",level:2},{value:"Precompiles",id:"precompiles",level:2},{value:"Beacon root",id:"beacon-root",level:2},{value:"Call data",id:"call-data",level:2},{value:"JSON-RPC API",id:"json-rpc-api",level:2},{value:"Type 3 transactions",id:"type-3-transactions",level:2},{value:"EIP-7702",id:"eip-7702",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:["This page outlines Ethereum mainnet functionality that differs on Status Network, or is not yet available.\nAbsence from this page indicates that the functionality is available on Status Network and identical to behavior on Ethereum mainnet.\nIf you're experiencing otherwise, please get in touch via our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"}),"."]}),"\n",(0,r.jsx)(t.admonition,{type:"note",children:(0,r.jsxs)(t.p,{children:["Status Network is built on the ",(0,r.jsx)(t.a,{href:"https://linea.build",children:"Linea zkEVM"})," stack. The differences listed below are inherited from the Linea zkEVM architecture and apply equally to Status Network."]})}),"\n",(0,r.jsx)(t.h2,{id:"evm-opcodes",children:"EVM opcodes"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Opcode"}),(0,r.jsx)(t.th,{children:"Ethereum"}),(0,r.jsx)(t.th,{children:"Status Network"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLOBBASEFEE"})}),(0,r.jsx)(t.td,{children:"Returns the value of the blob base-fee of the current block."}),(0,r.jsx)(t.td,{children:"Will always return the minimum value."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLOBHASH"})}),(0,r.jsxs)(t.td,{children:["Given an ",(0,r.jsx)(t.code,{children:"index"})," for a blob associated with a transaction, returns the hash of the corresponding blob. ",(0,r.jsx)("br",{})," Returns ",(0,r.jsx)(t.code,{children:"0"})," if out of bounds."]}),(0,r.jsxs)(t.td,{children:["Will always return ",(0,r.jsx)(t.code,{children:"0"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLOCKHASH"})}),(0,r.jsx)(t.td,{children:"Returns the hash of a requested block from the 256 most recent blocks."}),(0,r.jsx)(t.td,{children:"Returns the correct value, but the value is not guaranteed by the proof (Status Network is a type 2 zkEVM, and uses/proves an L2-specific state representation)."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"PREVRANDAO"})}),(0,r.jsx)(t.td,{children:"Returns the RANDAO value from the previous block."}),(0,r.jsxs)(t.td,{children:["Uses a formula similar to Ethereum, e.g. ",(0,r.jsx)(t.code,{children:"L2_prevrandao XOR hash(signed(slot_id))"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Consult the Ethereum Foundation's ",(0,r.jsx)(t.a,{href:"https://ethereum.org/en/developers/docs/evm/opcodes/",children:"Opcode Reference"}),"\nfor more."]})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"https://evmdiff.com",children:"Evmdiff"})," is also a useful resource for comparing EVM implementations (compare Ethereum Mainnet against ",(0,r.jsx)(t.em,{children:"Linea"}),"), and\n",(0,r.jsx)(t.a,{href:"https://evm.codes/",children:"evm.codes"})," is useful for information about specific opcodes on Ethereum."]}),"\n",(0,r.jsx)(t.h2,{id:"precompiles",children:"Precompiles"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Precompile"}),(0,r.jsx)(t.th,{children:"Ethereum"}),(0,r.jsx)(t.th,{children:"Status Network"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLAKE2f"})}),(0,r.jsx)(t.td,{children:"Compression function F used in the BLAKE2 cryptographic hashing algorithm."}),(0,r.jsx)(t.td,{children:"Not supported."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"MODEXP"})}),(0,r.jsx)(t.td,{children:"Arbitrary-precision exponentiation under modulo."}),(0,r.jsx)(t.td,{children:"Only supports arguments (base, exponent, modulus) that do not exceed 512-byte integers."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Precompiles as transaction recipients"}),(0,r.jsx)(t.td,{children:"Applicable to various use cases."}),(0,r.jsxs)(t.td,{children:["Not supported. A transaction ",(0,r.jsx)(t.code,{children:"to"})," address cannot be a precompile, i.e. an address in the range ",(0,r.jsx)(t.code,{children:"0x01"}),"-",(0,r.jsx)(t.code,{children:"0x09"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"RIPEMD-160"})}),(0,r.jsx)(t.td,{children:"A hash function."}),(0,r.jsx)(t.td,{children:"Not supported."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"beacon-root",children:"Beacon root"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"https://eips.ethereum.org/EIPS/eip-4788",children:"EIP-4788"}),", included in Ethereum's Dencun upgrade,\nintroduced a smart contract that enables the caller to ",(0,r.jsx)(t.code,{children:"get"})," or ",(0,r.jsx)(t.code,{children:"set"})," the hash tree root of a\nbeacon chain block."]}),"\n",(0,r.jsx)(t.p,{children:"This functionality is available on Status Network. However, due to the difference in block time\nwhen compared to Ethereum mainnet, only the root of the previous block is available."}),"\n",(0,r.jsx)(t.h2,{id:"call-data",children:"Call data"}),"\n",(0,r.jsx)(t.p,{children:"Status Network's sequencer limits the size of call data so that transactions can fit into the\ncorresponding blob. The current limit is 60,000 bytes."}),"\n",(0,r.jsx)(t.h2,{id:"json-rpc-api",children:"JSON-RPC API"}),"\n",(0,r.jsxs)(t.p,{children:["Status Network uses the standard Ethereum JSON-RPC API methods. However, in a few cases, methods\ndiffer from those on Ethereum \u2014 most notably ",(0,r.jsx)(t.code,{children:"linea_estimateGas"}),", which is extended with\nKarma-aware fee estimation."]}),"\n",(0,r.jsxs)(t.p,{children:["For full details, see the ",(0,r.jsx)(t.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})," reference."]}),"\n",(0,r.jsx)(t.h2,{id:"type-3-transactions",children:"Type 3 transactions"}),"\n",(0,r.jsxs)(t.p,{children:["Status Network does not support type 3 (",(0,r.jsx)(t.code,{children:"0x3"}),' or "blob") transactions. This type is used on\nEthereum mainnet primarily for layer 2 rollups to cheaply post data on L1.']}),"\n",(0,r.jsx)(t.h2,{id:"eip-7702",children:"EIP-7702"}),"\n",(0,r.jsx)(t.p,{children:"EIP-7702 is not yet supported on Status Network."})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>d});var n=s(6540);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cef817d0.584455c2.js b/assets/js/cef817d0.584455c2.js new file mode 100644 index 0000000..a732c4d --- /dev/null +++ b/assets/js/cef817d0.584455c2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[6093],{6521:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"tools/ethereum-compatibility/ethereum-differences","title":"Differences between Ethereum and Status Network","description":"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.","source":"@site/docs/tools/ethereum-compatibility/ethereum-differences.md","sourceDirName":"tools/ethereum-compatibility","slug":"/tools/ethereum-compatibility/ethereum-differences","permalink":"/tools/ethereum-compatibility/ethereum-differences","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/ethereum-compatibility/ethereum-differences.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":1,"frontMatter":{"title":"Differences between Ethereum and Status Network","description":"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.","keywords":["Status Network","Ethereum differences","EVM compatibility","opcodes","precompiles","Linea zkEVM"],"sidebar_position":1},"sidebar":"toolsSidebar","previous":{"title":"\ud83c\udf10 Running an RPC Node","permalink":"/tools/rpc/running-an-rpc"},"next":{"title":"\ud83e\udd1d Infrastructure Partners","permalink":"/tools/infrastructure"}}');var r=s(4848),i=s(8453);const o={title:"Differences between Ethereum and Status Network",description:"Differences between Status Network and Ethereum mainnet \u2014 opcodes, precompiles, transaction types, and API behavior developers should know about.",keywords:["Status Network","Ethereum differences","EVM compatibility","opcodes","precompiles","Linea zkEVM"],sidebar_position:1},d="Differences between Ethereum and Status Network",a={},c=[{value:"EVM opcodes",id:"evm-opcodes",level:2},{value:"Precompiles",id:"precompiles",level:2},{value:"Beacon root",id:"beacon-root",level:2},{value:"Call data",id:"call-data",level:2},{value:"JSON-RPC API",id:"json-rpc-api",level:2},{value:"Type 3 transactions",id:"type-3-transactions",level:2},{value:"EIP-7702",id:"eip-7702",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",header:"header",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"differences-between-ethereum-and-status-network",children:"Differences between Ethereum and Status Network"})}),"\n",(0,r.jsxs)(t.p,{children:["This page outlines Ethereum mainnet functionality that differs on Status Network, or is not yet available.\nAbsence from this page indicates that the functionality is available on Status Network and identical to behavior on Ethereum mainnet.\nIf you're experiencing otherwise, please get in touch via our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"}),"."]}),"\n",(0,r.jsx)(t.admonition,{type:"note",children:(0,r.jsxs)(t.p,{children:["Status Network is built on the ",(0,r.jsx)(t.a,{href:"https://linea.build",children:"Linea zkEVM"})," stack. The differences listed below are inherited from the Linea zkEVM architecture and apply equally to Status Network."]})}),"\n",(0,r.jsx)(t.h2,{id:"evm-opcodes",children:"EVM opcodes"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Opcode"}),(0,r.jsx)(t.th,{children:"Ethereum"}),(0,r.jsx)(t.th,{children:"Status Network"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLOBBASEFEE"})}),(0,r.jsx)(t.td,{children:"Returns the value of the blob base-fee of the current block."}),(0,r.jsx)(t.td,{children:"Will always return the minimum value."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLOBHASH"})}),(0,r.jsxs)(t.td,{children:["Given an ",(0,r.jsx)(t.code,{children:"index"})," for a blob associated with a transaction, returns the hash of the corresponding blob. ",(0,r.jsx)("br",{})," Returns ",(0,r.jsx)(t.code,{children:"0"})," if out of bounds."]}),(0,r.jsxs)(t.td,{children:["Will always return ",(0,r.jsx)(t.code,{children:"0"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLOCKHASH"})}),(0,r.jsx)(t.td,{children:"Returns the hash of a requested block from the 256 most recent blocks."}),(0,r.jsx)(t.td,{children:"Returns the correct value, but the value is not guaranteed by the proof (Status Network is a type 2 zkEVM, and uses/proves an L2-specific state representation)."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"PREVRANDAO"})}),(0,r.jsx)(t.td,{children:"Returns the RANDAO value from the previous block."}),(0,r.jsxs)(t.td,{children:["Uses a formula similar to Ethereum, e.g. ",(0,r.jsx)(t.code,{children:"L2_prevrandao XOR hash(signed(slot_id))"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Consult the Ethereum Foundation's ",(0,r.jsx)(t.a,{href:"https://ethereum.org/en/developers/docs/evm/opcodes/",children:"Opcode Reference"}),"\nfor more."]})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"https://evmdiff.com",children:"Evmdiff"})," is also a useful resource for comparing EVM implementations (compare Ethereum Mainnet against ",(0,r.jsx)(t.em,{children:"Linea"}),"), and\n",(0,r.jsx)(t.a,{href:"https://evm.codes/",children:"evm.codes"})," is useful for information about specific opcodes on Ethereum."]}),"\n",(0,r.jsx)(t.h2,{id:"precompiles",children:"Precompiles"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Precompile"}),(0,r.jsx)(t.th,{children:"Ethereum"}),(0,r.jsx)(t.th,{children:"Status Network"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"BLAKE2f"})}),(0,r.jsx)(t.td,{children:"Compression function F used in the BLAKE2 cryptographic hashing algorithm."}),(0,r.jsx)(t.td,{children:"Not supported."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"MODEXP"})}),(0,r.jsx)(t.td,{children:"Arbitrary-precision exponentiation under modulo."}),(0,r.jsx)(t.td,{children:"Only supports arguments (base, exponent, modulus) that do not exceed 512-byte integers."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Precompiles as transaction recipients"}),(0,r.jsx)(t.td,{children:"Applicable to various use cases."}),(0,r.jsxs)(t.td,{children:["Not supported. A transaction ",(0,r.jsx)(t.code,{children:"to"})," address cannot be a precompile, i.e. an address in the range ",(0,r.jsx)(t.code,{children:"0x01"}),"-",(0,r.jsx)(t.code,{children:"0x09"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"RIPEMD-160"})}),(0,r.jsx)(t.td,{children:"A hash function."}),(0,r.jsx)(t.td,{children:"Not supported."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"beacon-root",children:"Beacon root"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"https://eips.ethereum.org/EIPS/eip-4788",children:"EIP-4788"}),", included in Ethereum's Dencun upgrade,\nintroduced a smart contract that enables the caller to ",(0,r.jsx)(t.code,{children:"get"})," or ",(0,r.jsx)(t.code,{children:"set"})," the hash tree root of a\nbeacon chain block."]}),"\n",(0,r.jsx)(t.p,{children:"This functionality is available on Status Network. However, due to the difference in block time\nwhen compared to Ethereum mainnet, only the root of the previous block is available."}),"\n",(0,r.jsx)(t.h2,{id:"call-data",children:"Call data"}),"\n",(0,r.jsx)(t.p,{children:"Status Network's sequencer limits the size of call data so that transactions can fit into the\ncorresponding blob. The current limit is 60,000 bytes."}),"\n",(0,r.jsx)(t.h2,{id:"json-rpc-api",children:"JSON-RPC API"}),"\n",(0,r.jsxs)(t.p,{children:["Status Network uses the standard Ethereum JSON-RPC API methods. However, in a few cases, methods\ndiffer from those on Ethereum \u2014 most notably ",(0,r.jsx)(t.code,{children:"linea_estimateGas"}),", which is extended with\nKarma-aware fee estimation."]}),"\n",(0,r.jsxs)(t.p,{children:["For full details, see the ",(0,r.jsx)(t.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})," reference."]}),"\n",(0,r.jsx)(t.h2,{id:"type-3-transactions",children:"Type 3 transactions"}),"\n",(0,r.jsxs)(t.p,{children:["Status Network does not support type 3 (",(0,r.jsx)(t.code,{children:"0x3"}),' or "blob") transactions. This type is used on\nEthereum mainnet primarily for layer 2 rollups to cheaply post data on L1.']}),"\n",(0,r.jsx)(t.h2,{id:"eip-7702",children:"EIP-7702"}),"\n",(0,r.jsx)(t.p,{children:"EIP-7702 is not yet supported on Status Network."})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>d});var n=s(6540);const r={},i=n.createContext(r);function o(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d11b878a.b99cdc84.js b/assets/js/d11b878a.b99cdc84.js new file mode 100644 index 0000000..5d7d34f --- /dev/null +++ b/assets/js/d11b878a.b99cdc84.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9185],{1663:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"tools/rpc/running-an-rpc","title":"Run an RPC Node: Self-Host Status Network Infra","description":"Guide to setting up a self-hosted RPC node for Status Network. Learn about node configuration, maintenance, and providing reliable infra for gasless apps.","source":"@site/docs/tools/rpc/running-an-rpc.md","sourceDirName":"tools/rpc","slug":"/tools/rpc/running-an-rpc","permalink":"/tools/rpc/running-an-rpc","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/rpc/running-an-rpc.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Run an RPC Node: Self-Host Status Network Infra","description":"Guide to setting up a self-hosted RPC node for Status Network. Learn about node configuration, maintenance, and providing reliable infra for gasless apps.","keywords":["RPC node","Status Network RPC","blockchain node","WebSocket","wss","self-hosted RPC","network infrastructure","Status L2 RPC tools"]},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udd0c JSON-RPC API","permalink":"/tools/rpc/json-rpc"},"next":{"title":"\ud83d\udd00 Ethereum Differences","permalink":"/tools/ethereum-compatibility/ethereum-differences"}}');var r=s(4848),o=s(8453);const t={title:"Run an RPC Node: Self-Host Status Network Infra",description:"Guide to setting up a self-hosted RPC node for Status Network. Learn about node configuration, maintenance, and providing reliable infra for gasless apps.",keywords:["RPC node","Status Network RPC","blockchain node","WebSocket","wss","self-hosted RPC","network infrastructure","Status L2 RPC tools"]},l="Running Your Own RPC Node",c={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"Complete Setup Guide",id:"complete-setup-guide",level:3},{value:"Node Options",id:"node-options",level:2},{value:"Production RPC Topologies",id:"production-rpc-topologies",level:2},{value:"Write-Capable RPC",id:"write-capable-rpc",level:3},{value:"Read-Only RPC",id:"read-only-rpc",level:3},{value:"Verifying Your Node",id:"verifying-your-node",level:2},{value:"Basic Verification",id:"basic-verification",level:3},{value:"Health & Sync Verification",id:"health--sync-verification",level:3},{value:"WebSocket Support",id:"websocket-support",level:2},{value:"WebSocket Connection",id:"websocket-connection",level:3},{value:"Example Subscriptions",id:"example-subscriptions",level:3},{value:"Advanced Features",id:"advanced-features",level:2},{value:"Batch Requests",id:"batch-requests",level:3},{value:"Resource-Intensive Methods",id:"resource-intensive-methods",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Common Issues",id:"common-issues",level:3},{value:"Monitoring Your Node",id:"monitoring-your-node",level:3},{value:"Storage Planning",id:"storage-planning",level:2},{value:"Disk Space Requirements",id:"disk-space-requirements",level:3},{value:"Security Considerations",id:"security-considerations",level:2},{value:"Performance Optimization",id:"performance-optimization",level:2},{value:"Support",id:"support",level:2},{value:"Additional Resources",id:"additional-resources",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"running-your-own-rpc-node",children:"Running Your Own RPC Node"})}),"\n",(0,r.jsx)(n.p,{children:"This tutorial will guide you through the process of setting up and running your own Remote Procedure Call (RPC) node for Status Network. By running your own RPC node, you can gain greater control over your interactions with the Status Network, enhance privacy, and reduce reliance on third-party services."}),"\n",(0,r.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools",children:"Status Network RPC Tools repository"})," provides all the necessary tooling, genesis files, and setup scripts to run your own RPC node."]}),"\n",(0,r.jsx)(n.h3,{id:"complete-setup-guide",children:"Complete Setup Guide"}),"\n",(0,r.jsxs)(n.p,{children:["For detailed setup instructions, prerequisites, system requirements, and step-by-step guidance, please refer to the ",(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md",children:(0,r.jsx)(n.strong,{children:"official README"})})," in the repository."]}),"\n",(0,r.jsx)(n.h2,{id:"node-options",children:"Node Options"}),"\n",(0,r.jsx)(n.p,{children:"The setup script provides two node implementations to choose from:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Besu Node"}),": Runs on port ",(0,r.jsx)(n.code,{children:"8545"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Geth Node"}),": Runs on port ",(0,r.jsx)(n.code,{children:"8445"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"You can run either one or both simultaneously depending on your needs."}),"\n",(0,r.jsx)(n.h2,{id:"production-rpc-topologies",children:"Production RPC Topologies"}),"\n",(0,r.jsx)(n.p,{children:"Use the following topology guidance for production-grade routing, reliability, and performance."}),"\n",(0,r.jsx)(n.p,{children:"For write-capable RPC setups, mutability-related flows will require static IP allowlisting by Status Network because the RLN prover is currently a constrained entity."}),"\n",(0,r.jsx)(n.h3,{id:"write-capable-rpc",children:"Write-Capable RPC"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Minimal"}),": Run 1 Besu client."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Recommended"}),": Run 2 clients simultaneously (Besu + Geth)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Besu-required methods"}),":","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_estimateGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_getTransactionExclusionStatusV1"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_sendTransaction"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_sendRawTransaction"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_maxPriorityFeePerGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_gasPrice"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Routing rule"}),": Route all other methods to Geth for better read performance."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"read-only-rpc",children:"Read-Only RPC"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Minimal"}),": Run 1 Besu client."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Recommended"}),": Run 2 clients simultaneously (Besu + Geth)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Besu-required methods"}),":","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_estimateGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_getTransactionExclusionStatusV1"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_maxPriorityFeePerGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_gasPrice"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Routing rule"}),": Route all other methods to Geth for better read performance."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"verifying-your-node",children:"Verifying Your Node"}),"\n",(0,r.jsxs)(n.p,{children:["In the examples below, replace ",(0,r.jsx)(n.code,{children:""})," with ",(0,r.jsx)(n.code,{children:"8545"})," if using Besu, or ",(0,r.jsx)(n.code,{children:"8445"})," if using Geth."]}),"\n",(0,r.jsx)(n.h3,{id:"basic-verification",children:"Basic Verification"}),"\n",(0,r.jsx)(n.p,{children:"Once your node is running, verify it's working correctly:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# You should receive a response with the current block number.\ncurl -X POST \\\n -H "Content-Type: application/json" \\\n -d \'{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}\' \\\n http://localhost:\n'})}),"\n",(0,r.jsx)(n.h3,{id:"health--sync-verification",children:"Health & Sync Verification"}),"\n",(0,r.jsx)(n.p,{children:"For comprehensive node health checks:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Check your node\'s syncing status. Returns false if the node is in sync.\ncurl -X POST \\\n -H "Content-Type: application/json" \\\n -d \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' \\\n http://localhost:\n\n# Verify your node\'s number of connected peers (should be > 0)\ncurl -X POST \\\n -H "Content-Type: application/json" \\\n -d \'{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}\' \\\n http://localhost:\n'})}),"\n",(0,r.jsx)(n.p,{children:"An up-to-date and healthy node should show:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_blockNumber"})," matches a trusted reference (like the public RPC or block explorer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_syncing"})," returns ",(0,r.jsx)(n.code,{children:"false"})," (fully synced)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"net_peerCount"})," is greater than 0 (connected to peers)"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"websocket-support",children:"WebSocket Support"}),"\n",(0,r.jsx)(n.p,{children:"Your node also supports WebSocket connections for real-time event subscriptions:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# WebSocket endpoint\nws://localhost:8546 # Besu\nws://localhost:8446 # Geth\n"})}),"\n",(0,r.jsx)(n.h3,{id:"websocket-connection",children:"WebSocket Connection"}),"\n",(0,r.jsx)(n.h3,{id:"example-subscriptions",children:"Example Subscriptions"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'// Subscribe to new block headers\n{"jsonrpc":"2.0","method":"eth_subscribe","params":["newHeads"],"id":1}\n\n// Subscribe to logs matching a filter\n{"jsonrpc":"2.0","method":"eth_subscribe","params":["logs",{"address":"0x..."}],"id":1}\n\n// Unsubscribe\n{"jsonrpc":"2.0","method":"eth_unsubscribe","params":["0x..."],"id":1}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"advanced-features",children:"Advanced Features"}),"\n",(0,r.jsx)(n.h3,{id:"batch-requests",children:"Batch Requests"}),"\n",(0,r.jsx)(n.p,{children:"Your node supports batch JSON-RPC requests for improved efficiency:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Default batch cap"}),": 1,024 requests per batch"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Configuration"}),": Tunable via ",(0,r.jsx)(n.code,{children:"--rpc-http-max-batch-size"})," (set to ",(0,r.jsx)(n.code,{children:"1"})," for unlimited)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Max request size"}),": 5 MB (default ",(0,r.jsx)(n.code,{children:"--rpc-http-max-request-content-length"}),")"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"resource-intensive-methods",children:"Resource-Intensive Methods"}),"\n",(0,r.jsx)(n.p,{children:"Be aware of methods that may require longer response times:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_getLogs"})," (large ranges): 200ms to several seconds. Use bounded ranges and bloom filters."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_estimateGas"}),": 200ms to several seconds. May be slower under load or with complex contracts."]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{title:"Performance Tip",type:"tip",children:(0,r.jsx)(n.p,{children:"For production use, start with low-thousands read RPS and scale horizontally based on your specific workload and hardware tests."})}),"\n",(0,r.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsx)(n.h3,{id:"common-issues",children:"Common Issues"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Port Already in Use"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Check what's using port 8545 (Besu) or 8445 (Geth)\nlsof -i :8545\nlsof -i :8445\n\n# Kill the process if needed\nkill -9 \n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Docker Container Issues"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Check running containers\ndocker ps\n\n# View container logs\ndocker compose logs -f\n\n# Restart containers\ndocker compose restart\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Node Not Syncing"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Check your internet connection"}),"\n",(0,r.jsx)(n.li,{children:"Verify you have sufficient disk space"}),"\n",(0,r.jsxs)(n.li,{children:["Check the Docker container logs: ",(0,r.jsx)(n.code,{children:"docker compose logs"})]}),"\n",(0,r.jsx)(n.li,{children:"Ensure your system meets the minimum requirements"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"RPC Endpoint Not Responding"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Verify containers are running: ",(0,r.jsx)(n.code,{children:"docker ps"})]}),"\n",(0,r.jsx)(n.li,{children:"Check firewall settings"}),"\n",(0,r.jsx)(n.li,{children:"Ensure the RPC ports (8545, 8445) are accessible"}),"\n",(0,r.jsx)(n.li,{children:"Review container logs for errors"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"monitoring-your-node",children:"Monitoring Your Node"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Check Docker containers status\ndocker compose ps\n\n# Monitor container logs\ndocker compose logs -f\n\n# Monitor disk usage\ndf -h\n\n# Check network connections\nnetstat -tulpn | grep :8545\nnetstat -tulpn | grep :8445\n"})}),"\n",(0,r.jsx)(n.h2,{id:"storage-planning",children:"Storage Planning"}),"\n",(0,r.jsx)(n.h3,{id:"disk-space-requirements",children:"Disk Space Requirements"}),"\n",(0,r.jsx)(n.p,{children:"Plan your storage capacity based on growth:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Initial size: ~200 GB (after 6 months, ~12M transactions with 2s blocks)"}),"\n",(0,r.jsx)(n.li,{children:"Growth rate: Moderate, depends on network activity"}),"\n",(0,r.jsx)(n.li,{children:"Recommended: 2 TB Gen4 NVMe for headroom"}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{title:"Plan for Growth",type:"warning",children:(0,r.jsx)(n.p,{children:"Always provision extra storage capacity beyond the current requirement to ensure continued operation."})}),"\n",(0,r.jsx)(n.h2,{id:"security-considerations",children:"Security Considerations"}),"\n",(0,r.jsx)(n.p,{children:"When running your own RPC node:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Firewall Configuration"}),": Only expose necessary ports (8545, 8445)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Access Control"}),": Consider implementing authentication for production use"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network Isolation"}),": Avoid exposing RPC endpoints directly to the internet"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Regular Updates"}),": Keep your node software and Docker images updated"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Backup"}),": Regularly backup your node configuration (data can be re-synced if needed)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Rate Limiting"}),": Implement rate limiting if exposing to multiple users"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{title:"Production Deployment",type:"caution",children:(0,r.jsx)(n.p,{children:"For production use, avoid relying on public RPC endpoints due to rate limits. Running your own private RPC node provides better reliability and performance."})}),"\n",(0,r.jsx)(n.h2,{id:"performance-optimization",children:"Performance Optimization"}),"\n",(0,r.jsx)(n.p,{children:"To optimize your RPC node performance:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"SSD Storage"}),": Use Gen4 NVMe storage for better I/O performance"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Sufficient RAM"}),": Ensure adequate memory for caching (32\u201348 GB recommended)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network Bandwidth"}),": Stable 1+ Gbps connection for syncing and peer communication"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU Resources"}),": Adequate processing power for transaction validation (8\u201312 cores recommended)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Horizontal Scaling"}),": For high-traffic applications, run multiple nodes behind a load balancer"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"support",children:"Support"}),"\n",(0,r.jsx)(n.p,{children:"If you encounter any issues:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Check the ",(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md",children:"official README"})," for the latest updates"]}),"\n",(0,r.jsxs)(n.li,{children:["Review our ",(0,r.jsx)(n.a,{href:"/overview/general-info/network-details",children:"Network Details"})," and docs in general"]}),"\n",(0,r.jsxs)(n.li,{children:["Join our ",(0,r.jsx)(n.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for support"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"additional-resources",children:"Additional Resources"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools",children:"Status Network RPC Tools Repository"})," - Official repository with setup guide and scripts"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.status.network/",children:"Status Network Documentation"})," - Official docs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://sepoliascan.status.network",children:"Status Network Block Explorer"})," - Sepolia testnet explorer"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>l});var i=s(6540);const r={},o=i.createContext(r);function t(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d11b878a.e36dfc45.js b/assets/js/d11b878a.e36dfc45.js deleted file mode 100644 index 8f18754..0000000 --- a/assets/js/d11b878a.e36dfc45.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9185],{1663:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"tools/rpc/running-an-rpc","title":"Running Your Own RPC Node","description":"Complete guide to setting up and running your own RPC node for Status Network using the official RPC tools. Learn about node setup, configuration, and maintenance.","source":"@site/docs/tools/rpc/running-an-rpc.md","sourceDirName":"tools/rpc","slug":"/tools/rpc/running-an-rpc","permalink":"/tools/rpc/running-an-rpc","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/rpc/running-an-rpc.md","tags":[],"version":"current","lastUpdatedAt":1773442806000,"frontMatter":{"title":"Running Your Own RPC Node","description":"Complete guide to setting up and running your own RPC node for Status Network using the official RPC tools. Learn about node setup, configuration, and maintenance.","keywords":["RPC node","Status Network RPC","blockchain node","WebSocket","wss","self-hosted RPC","network infrastructure","Status L2 RPC tools"]},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udd0c JSON-RPC API","permalink":"/tools/rpc/json-rpc"},"next":{"title":"\ud83d\udd00 Ethereum Differences","permalink":"/tools/ethereum-compatibility/ethereum-differences"}}');var r=s(4848),o=s(8453);const t={title:"Running Your Own RPC Node",description:"Complete guide to setting up and running your own RPC node for Status Network using the official RPC tools. Learn about node setup, configuration, and maintenance.",keywords:["RPC node","Status Network RPC","blockchain node","WebSocket","wss","self-hosted RPC","network infrastructure","Status L2 RPC tools"]},l=void 0,c={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"Complete Setup Guide",id:"complete-setup-guide",level:3},{value:"Node Options",id:"node-options",level:2},{value:"Production RPC Topologies",id:"production-rpc-topologies",level:2},{value:"Write-Capable RPC",id:"write-capable-rpc",level:3},{value:"Read-Only RPC",id:"read-only-rpc",level:3},{value:"Verifying Your Node",id:"verifying-your-node",level:2},{value:"Basic Verification",id:"basic-verification",level:3},{value:"Health & Sync Verification",id:"health--sync-verification",level:3},{value:"WebSocket Support",id:"websocket-support",level:2},{value:"WebSocket Connection",id:"websocket-connection",level:3},{value:"Example Subscriptions",id:"example-subscriptions",level:3},{value:"Advanced Features",id:"advanced-features",level:2},{value:"Batch Requests",id:"batch-requests",level:3},{value:"Resource-Intensive Methods",id:"resource-intensive-methods",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Common Issues",id:"common-issues",level:3},{value:"Monitoring Your Node",id:"monitoring-your-node",level:3},{value:"Storage Planning",id:"storage-planning",level:2},{value:"Disk Space Requirements",id:"disk-space-requirements",level:3},{value:"Security Considerations",id:"security-considerations",level:2},{value:"Performance Optimization",id:"performance-optimization",level:2},{value:"Support",id:"support",level:2},{value:"Additional Resources",id:"additional-resources",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This tutorial will guide you through the process of setting up and running your own Remote Procedure Call (RPC) node for Status Network. By running your own RPC node, you can gain greater control over your interactions with the Status Network, enhance privacy, and reduce reliance on third-party services."}),"\n",(0,r.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools",children:"Status Network RPC Tools repository"})," provides all the necessary tooling, genesis files, and setup scripts to run your own RPC node."]}),"\n",(0,r.jsx)(n.h3,{id:"complete-setup-guide",children:"Complete Setup Guide"}),"\n",(0,r.jsxs)(n.p,{children:["For detailed setup instructions, prerequisites, system requirements, and step-by-step guidance, please refer to the ",(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md",children:(0,r.jsx)(n.strong,{children:"official README"})})," in the repository."]}),"\n",(0,r.jsx)(n.h2,{id:"node-options",children:"Node Options"}),"\n",(0,r.jsx)(n.p,{children:"The setup script provides two node implementations to choose from:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Besu Node"}),": Runs on port ",(0,r.jsx)(n.code,{children:"8545"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Geth Node"}),": Runs on port ",(0,r.jsx)(n.code,{children:"8445"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"You can run either one or both simultaneously depending on your needs."}),"\n",(0,r.jsx)(n.h2,{id:"production-rpc-topologies",children:"Production RPC Topologies"}),"\n",(0,r.jsx)(n.p,{children:"Use the following topology guidance for production-grade routing, reliability, and performance."}),"\n",(0,r.jsx)(n.p,{children:"For write-capable RPC setups, mutability-related flows will require static IP allowlisting by Status Network because the RLN prover is currently a constrained entity."}),"\n",(0,r.jsx)(n.h3,{id:"write-capable-rpc",children:"Write-Capable RPC"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Minimal"}),": Run 1 Besu client."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Recommended"}),": Run 2 clients simultaneously (Besu + Geth)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Besu-required methods"}),":","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_estimateGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_getTransactionExclusionStatusV1"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_sendTransaction"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_sendRawTransaction"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_maxPriorityFeePerGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_gasPrice"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Routing rule"}),": Route all other methods to Geth for better read performance."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"read-only-rpc",children:"Read-Only RPC"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Minimal"}),": Run 1 Besu client."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Recommended"}),": Run 2 clients simultaneously (Besu + Geth)."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Besu-required methods"}),":","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_estimateGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"linea_getTransactionExclusionStatusV1"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_maxPriorityFeePerGas"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.code,{children:"eth_gasPrice"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Routing rule"}),": Route all other methods to Geth for better read performance."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"verifying-your-node",children:"Verifying Your Node"}),"\n",(0,r.jsxs)(n.p,{children:["In the examples below, replace ",(0,r.jsx)(n.code,{children:""})," with ",(0,r.jsx)(n.code,{children:"8545"})," if using Besu, or ",(0,r.jsx)(n.code,{children:"8445"})," if using Geth."]}),"\n",(0,r.jsx)(n.h3,{id:"basic-verification",children:"Basic Verification"}),"\n",(0,r.jsx)(n.p,{children:"Once your node is running, verify it's working correctly:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# You should receive a response with the current block number.\ncurl -X POST \\\n -H "Content-Type: application/json" \\\n -d \'{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}\' \\\n http://localhost:\n'})}),"\n",(0,r.jsx)(n.h3,{id:"health--sync-verification",children:"Health & Sync Verification"}),"\n",(0,r.jsx)(n.p,{children:"For comprehensive node health checks:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Check your node\'s syncing status. Returns false if the node is in sync.\ncurl -X POST \\\n -H "Content-Type: application/json" \\\n -d \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' \\\n http://localhost:\n\n# Verify your node\'s number of connected peers (should be > 0)\ncurl -X POST \\\n -H "Content-Type: application/json" \\\n -d \'{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}\' \\\n http://localhost:\n'})}),"\n",(0,r.jsx)(n.p,{children:"An up-to-date and healthy node should show:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_blockNumber"})," matches a trusted reference (like the public RPC or block explorer)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_syncing"})," returns ",(0,r.jsx)(n.code,{children:"false"})," (fully synced)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"net_peerCount"})," is greater than 0 (connected to peers)"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"websocket-support",children:"WebSocket Support"}),"\n",(0,r.jsx)(n.p,{children:"Your node also supports WebSocket connections for real-time event subscriptions:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# WebSocket endpoint\nws://localhost:8546 # Besu\nws://localhost:8446 # Geth\n"})}),"\n",(0,r.jsx)(n.h3,{id:"websocket-connection",children:"WebSocket Connection"}),"\n",(0,r.jsx)(n.h3,{id:"example-subscriptions",children:"Example Subscriptions"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'// Subscribe to new block headers\n{"jsonrpc":"2.0","method":"eth_subscribe","params":["newHeads"],"id":1}\n\n// Subscribe to logs matching a filter\n{"jsonrpc":"2.0","method":"eth_subscribe","params":["logs",{"address":"0x..."}],"id":1}\n\n// Unsubscribe\n{"jsonrpc":"2.0","method":"eth_unsubscribe","params":["0x..."],"id":1}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"advanced-features",children:"Advanced Features"}),"\n",(0,r.jsx)(n.h3,{id:"batch-requests",children:"Batch Requests"}),"\n",(0,r.jsx)(n.p,{children:"Your node supports batch JSON-RPC requests for improved efficiency:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Default batch cap"}),": 1,024 requests per batch"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Configuration"}),": Tunable via ",(0,r.jsx)(n.code,{children:"--rpc-http-max-batch-size"})," (set to ",(0,r.jsx)(n.code,{children:"1"})," for unlimited)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Max request size"}),": 5 MB (default ",(0,r.jsx)(n.code,{children:"--rpc-http-max-request-content-length"}),")"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"resource-intensive-methods",children:"Resource-Intensive Methods"}),"\n",(0,r.jsx)(n.p,{children:"Be aware of methods that may require longer response times:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_getLogs"})," (large ranges): 200ms to several seconds. Use bounded ranges and bloom filters."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"eth_estimateGas"}),": 200ms to several seconds. May be slower under load or with complex contracts."]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{title:"Performance Tip",type:"tip",children:(0,r.jsx)(n.p,{children:"For production use, start with low-thousands read RPS and scale horizontally based on your specific workload and hardware tests."})}),"\n",(0,r.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsx)(n.h3,{id:"common-issues",children:"Common Issues"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Port Already in Use"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Check what's using port 8545 (Besu) or 8445 (Geth)\nlsof -i :8545\nlsof -i :8445\n\n# Kill the process if needed\nkill -9 \n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Docker Container Issues"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Check running containers\ndocker ps\n\n# View container logs\ndocker compose logs -f\n\n# Restart containers\ndocker compose restart\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Node Not Syncing"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Check your internet connection"}),"\n",(0,r.jsx)(n.li,{children:"Verify you have sufficient disk space"}),"\n",(0,r.jsxs)(n.li,{children:["Check the Docker container logs: ",(0,r.jsx)(n.code,{children:"docker compose logs"})]}),"\n",(0,r.jsx)(n.li,{children:"Ensure your system meets the minimum requirements"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"RPC Endpoint Not Responding"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Verify containers are running: ",(0,r.jsx)(n.code,{children:"docker ps"})]}),"\n",(0,r.jsx)(n.li,{children:"Check firewall settings"}),"\n",(0,r.jsx)(n.li,{children:"Ensure the RPC ports (8545, 8445) are accessible"}),"\n",(0,r.jsx)(n.li,{children:"Review container logs for errors"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"monitoring-your-node",children:"Monitoring Your Node"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# Check Docker containers status\ndocker compose ps\n\n# Monitor container logs\ndocker compose logs -f\n\n# Monitor disk usage\ndf -h\n\n# Check network connections\nnetstat -tulpn | grep :8545\nnetstat -tulpn | grep :8445\n"})}),"\n",(0,r.jsx)(n.h2,{id:"storage-planning",children:"Storage Planning"}),"\n",(0,r.jsx)(n.h3,{id:"disk-space-requirements",children:"Disk Space Requirements"}),"\n",(0,r.jsx)(n.p,{children:"Plan your storage capacity based on growth:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Initial size: ~200 GB (after 6 months, ~12M transactions with 2s blocks)"}),"\n",(0,r.jsx)(n.li,{children:"Growth rate: Moderate, depends on network activity"}),"\n",(0,r.jsx)(n.li,{children:"Recommended: 2 TB Gen4 NVMe for headroom"}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{title:"Plan for Growth",type:"warning",children:(0,r.jsx)(n.p,{children:"Always provision extra storage capacity beyond the current requirement to ensure continued operation."})}),"\n",(0,r.jsx)(n.h2,{id:"security-considerations",children:"Security Considerations"}),"\n",(0,r.jsx)(n.p,{children:"When running your own RPC node:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Firewall Configuration"}),": Only expose necessary ports (8545, 8445)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Access Control"}),": Consider implementing authentication for production use"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network Isolation"}),": Avoid exposing RPC endpoints directly to the internet"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Regular Updates"}),": Keep your node software and Docker images updated"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Backup"}),": Regularly backup your node configuration (data can be re-synced if needed)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Rate Limiting"}),": Implement rate limiting if exposing to multiple users"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{title:"Production Deployment",type:"caution",children:(0,r.jsx)(n.p,{children:"For production use, avoid relying on public RPC endpoints due to rate limits. Running your own private RPC node provides better reliability and performance."})}),"\n",(0,r.jsx)(n.h2,{id:"performance-optimization",children:"Performance Optimization"}),"\n",(0,r.jsx)(n.p,{children:"To optimize your RPC node performance:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"SSD Storage"}),": Use Gen4 NVMe storage for better I/O performance"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Sufficient RAM"}),": Ensure adequate memory for caching (32\u201348 GB recommended)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network Bandwidth"}),": Stable 1+ Gbps connection for syncing and peer communication"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CPU Resources"}),": Adequate processing power for transaction validation (8\u201312 cores recommended)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Horizontal Scaling"}),": For high-traffic applications, run multiple nodes behind a load balancer"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"support",children:"Support"}),"\n",(0,r.jsx)(n.p,{children:"If you encounter any issues:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Check the ",(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md",children:"official README"})," for the latest updates"]}),"\n",(0,r.jsxs)(n.li,{children:["Review our ",(0,r.jsx)(n.a,{href:"/overview/general-info/network-details",children:"Network Details"})," and docs in general"]}),"\n",(0,r.jsxs)(n.li,{children:["Join our ",(0,r.jsx)(n.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for support"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"additional-resources",children:"Additional Resources"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/status-im/status-l2-rpc-tools",children:"Status Network RPC Tools Repository"})," - Official repository with setup guide and scripts"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://docs.status.network/",children:"Status Network Documentation"})," - Official docs"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://sepoliascan.status.network",children:"Status Network Block Explorer"})," - Sepolia testnet explorer"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>l});var i=s(6540);const r={},o=i.createContext(r);function t(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d725728a.625ee315.js b/assets/js/d725728a.6c16beba.js similarity index 53% rename from assets/js/d725728a.625ee315.js rename to assets/js/d725728a.6c16beba.js index 19500c7..bceb795 100644 --- a/assets/js/d725728a.625ee315.js +++ b/assets/js/d725728a.6c16beba.js @@ -1 +1 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[4909],{2363:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"overview/tokenomics/snt-staking","title":"SNT Staking","description":"Learn about staking Status Network Token (SNT), including staking options, multiplier points, benefits, and how staking contributes to network governance and access to gasless transactions.","source":"@site/docs/overview/tokenomics/snt-staking.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/snt-staking","permalink":"/overview/tokenomics/snt-staking","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/snt-staking.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"SNT Staking","description":"Learn about staking Status Network Token (SNT), including staking options, multiplier points, benefits, and how staking contributes to network governance and access to gasless transactions.","keywords":["SNT staking","Status Network Token","token staking","blockchain staking","multiplier points","locked staking","governance power","Karma system"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udc09 Karmic Tokenomics","permalink":"/overview/tokenomics/karmic-tokenomics"},"next":{"title":"\ud83d\udcb0 Pre-Deposits","permalink":"/overview/tokenomics/pre-deposits"}}');var s=n(4848),a=n(8453);const o={title:"SNT Staking",description:"Learn about staking Status Network Token (SNT), including staking options, multiplier points, benefits, and how staking contributes to network governance and access to gasless transactions.",keywords:["SNT staking","Status Network Token","token staking","blockchain staking","multiplier points","locked staking","governance power","Karma system"]},r="SNT Staking",c={},l=[{value:"Status Network Token (SNT)",id:"status-network-token-snt",level:2},{value:"Staking Contract",id:"staking-contract",level:2},{value:"Benefits of Staking SNT",id:"benefits-of-staking-snt",level:3}];function d(e){const t={h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"snt-staking",children:"SNT Staking"})}),"\n",(0,s.jsx)(t.h2,{id:"status-network-token-snt",children:"Status Network Token (SNT)"}),"\n",(0,s.jsx)(t.p,{children:"Launched in June 2017, the Status Network Token (SNT) serves as the native utility token of the Status ecosystem, a decentralized platform combining a messenger, web3 wallet, and gateway to decentralized applications on the Ethereum blockchain. SNT was designed to promote a decentralized and user-governed ecosystem, enabling holders to participate in governance, access features, and engage in various activities within the network. Over the years, SNT has facilitated user interactions within the Status app, allowing for voting on proposals, creating Ethereum Name Service (ENS) names, and accessing exclusive features."}),"\n",(0,s.jsx)(t.p,{children:"With the upcoming deployment of the SNT staking contract on Status Network testnet, SNT holders will soon have the opportunity to stake their tokens, earning rewards and contributing to the network's governance and incentivization."}),"\n",(0,s.jsx)(t.h2,{id:"staking-contract",children:"Staking Contract"}),"\n",(0,s.jsx)(t.p,{children:"The staking contract will introduce Multiplier Points, which reward long-term commitment. SNT holders will have two staking options:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.strong,{children:"Standard Staking"})}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Users can stake SNT without a lock-up period.\nThey receive Multiplier Points gradually over time.\nIf a user stakes for 4 years without unstaking, they achieve a maximum 4x Multiplier."}),"\n",(0,s.jsxs)(t.ol,{start:"2",children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.strong,{children:"Locked Staking"})}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Users can lock their SNT for a predetermined period (up to 4 years).\nThey immediately receive a bonus Multiplier Point as well as a bonus Multiplier for each year they lock in advance.\nFor example, locking for 4 years grants an instant 5x Multiplier (1x base + 4x for locking).\nOver the four-year period, they continue accumulating additional Multiplier Points, similar to standard staking, until they reach a maximum 9x total Multiplier"}),"\n",(0,s.jsx)(t.h3,{id:"benefits-of-staking-snt",children:"Benefits of Staking SNT"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Earning Karma"}),": Stakers accumulate Karma, which grants governance power and access to gasless transactions."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Higher Free Transaction Quotas"}),": Users with more Karma enjoy greater gasless transaction limits."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Boosted Governance Influence"}),": As they accumulate Karma, SNT stakers can play a critical role in public funding allocation, liquidity incentivization and network policy decisions."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Higher Reputation"}),": By staking their SNT, holders can signal alignment with the ecosystem and showcase a reputation score in the form of Karma. Apps in the ecosystem have a strong incentive to attract users with high reputation."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>r});var i=n(6540);const s={},a=i.createContext(s);function o(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[4909],{2363:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"overview/tokenomics/snt-staking","title":"SNT Staking: Secure the Network & Earn Reputation","description":"Staking SNT on Status Network. Earn Karma multipliers, unlock higher gasless transaction tiers, and participate in reputation-based network governance.","source":"@site/docs/overview/tokenomics/snt-staking.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/snt-staking","permalink":"/overview/tokenomics/snt-staking","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/snt-staking.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"SNT Staking: Secure the Network & Earn Reputation","description":"Staking SNT on Status Network. Earn Karma multipliers, unlock higher gasless transaction tiers, and participate in reputation-based network governance.","keywords":["SNT staking","Status Network Token","token staking","blockchain staking","multiplier points","locked staking","governance power","Karma system"]},"sidebar":"homeSidebar","previous":{"title":"\ud83d\udc09 Karmic Tokenomics","permalink":"/overview/tokenomics/karmic-tokenomics"},"next":{"title":"\ud83d\udcb0 Pre-Deposits","permalink":"/overview/tokenomics/pre-deposits"}}');var a=n(4848),s=n(8453);const r={title:"SNT Staking: Secure the Network & Earn Reputation",description:"Staking SNT on Status Network. Earn Karma multipliers, unlock higher gasless transaction tiers, and participate in reputation-based network governance.",keywords:["SNT staking","Status Network Token","token staking","blockchain staking","multiplier points","locked staking","governance power","Karma system"]},o="SNT Staking",c={},l=[{value:"Status Network Token (SNT)",id:"status-network-token-snt",level:2},{value:"Staking Contract",id:"staking-contract",level:2},{value:"Benefits of Staking SNT",id:"benefits-of-staking-snt",level:3}];function d(e){const t={h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.header,{children:(0,a.jsx)(t.h1,{id:"snt-staking",children:"SNT Staking"})}),"\n",(0,a.jsx)(t.h2,{id:"status-network-token-snt",children:"Status Network Token (SNT)"}),"\n",(0,a.jsx)(t.p,{children:"Launched in June 2017, the Status Network Token (SNT) serves as the native utility token of the Status ecosystem, a decentralized platform combining a messenger, web3 wallet, and gateway to decentralized applications on the Ethereum blockchain. SNT was designed to promote a decentralized and user-governed ecosystem, enabling holders to participate in governance, access features, and engage in various activities within the network. Over the years, SNT has facilitated user interactions within the Status app, allowing for voting on proposals, creating Ethereum Name Service (ENS) names, and accessing exclusive features."}),"\n",(0,a.jsx)(t.p,{children:"With the upcoming deployment of the SNT staking contract on Status Network testnet, SNT holders will soon have the opportunity to stake their tokens, earning rewards and contributing to the network's governance and incentivization."}),"\n",(0,a.jsx)(t.h2,{id:"staking-contract",children:"Staking Contract"}),"\n",(0,a.jsx)(t.p,{children:"The staking contract will introduce Multiplier Points, which reward long-term commitment. SNT holders will have two staking options:"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.strong,{children:"Standard Staking"})}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"Users can stake SNT without a lock-up period.\nThey receive Multiplier Points gradually over time.\nIf a user stakes for 4 years without unstaking, they achieve a maximum 4x Multiplier."}),"\n",(0,a.jsxs)(t.ol,{start:"2",children:["\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.strong,{children:"Locked Staking"})}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"Users can lock their SNT for a predetermined period (up to 4 years).\nThey immediately receive a bonus Multiplier Point as well as a bonus Multiplier for each year they lock in advance.\nFor example, locking for 4 years grants an instant 5x Multiplier (1x base + 4x for locking).\nOver the four-year period, they continue accumulating additional Multiplier Points, similar to standard staking, until they reach a maximum 9x total Multiplier"}),"\n",(0,a.jsx)(t.h3,{id:"benefits-of-staking-snt",children:"Benefits of Staking SNT"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Earning Karma"}),": Stakers accumulate Karma, which grants governance power and access to gasless transactions."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Higher Free Transaction Quotas"}),": Users with more Karma enjoy greater gasless transaction limits."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Boosted Governance Influence"}),": As they accumulate Karma, SNT stakers can play a critical role in public funding allocation, liquidity incentivization and network policy decisions."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Higher Reputation"}),": By staking their SNT, holders can signal alignment with the ecosystem and showcase a reputation score in the form of Karma. Apps in the ecosystem have a strong incentive to attract users with high reputation."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>o});var i=n(6540);const a={},s=i.createContext(a);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/dad64608.5a5c53cd.js b/assets/js/dad64608.5a5c53cd.js deleted file mode 100644 index 463c301..0000000 --- a/assets/js/dad64608.5a5c53cd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2610],{6247:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-se2","title":"Using Scaffold-ETH 2 with Status Network","description":"Quick start guide for deploying smart contracts on Status Network using the pre-configured Scaffold-ETH 2 extension.","source":"@site/docs/build-for-karma/deploying-contracts/using-se2.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-se2","permalink":"/build-for-karma/deploying-contracts/using-se2","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-se2.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"Using Scaffold-ETH 2 with Status Network","description":"Quick start guide for deploying smart contracts on Status Network using the pre-configured Scaffold-ETH 2 extension.","keywords":["Scaffold-ETH 2","smart contract deployment","Status Network development","Foundry","Hardhat","NextJS","web3 development"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83c\udf9b\ufe0f Using Remix","permalink":"/build-for-karma/deploying-contracts/using-remix"}}');var r=n(4848),o=n(8453);const i={title:"Using Scaffold-ETH 2 with Status Network",description:"Quick start guide for deploying smart contracts on Status Network using the pre-configured Scaffold-ETH 2 extension.",keywords:["Scaffold-ETH 2","smart contract deployment","Status Network development","Foundry","Hardhat","NextJS","web3 development"]},a="Using Scaffold-ETH 2 to Deploy Smart Contracts",l={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Quick Start",id:"quick-start",level:2},{value:"Key Points",id:"key-points",level:2},{value:"Support",id:"support",level:2}];function d(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"using-scaffold-eth-2-to-deploy-smart-contracts",children:"Using Scaffold-ETH 2 to Deploy Smart Contracts"})}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.a,{href:"https://github.com/status-im/status-network-scaffold-extension",children:"Status Network Scaffold-ETH 2 extension"})," provides a pre-configured setup for deploying smart contracts on Status Network with both Foundry and Hardhat support, plus a NextJS frontend."]}),"\n",(0,r.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Yarn"}),": Package manager for JavaScript projects"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Foundry"})," (optional): If you choose the Foundry workflow"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Ethereum Wallet"})," (optional): An EVM wallet private key for test, but it's okay if you don't have one"]}),"\n"]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Note"}),": Status Network supports gasless transactions, so testnet ETH is optional. If you still need testnet ETH, get it from our ",(0,r.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"}),"."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Install the extension:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npx create-eth@latest -e status-im/status-network-scaffold-extension\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Configure your account:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn generate\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Deploy to Status Network:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn deploy --network statusSepolia\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Verify your contract:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"# Hardhat\nyarn hardhat:hardhat-verify --network statusSepolia \n# Foundry\nyarn status:verify --network statusSepolia\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Launch the frontend:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn start\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"key-points",children:"Key Points"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"No local chain needed"}),": Deploy directly to testnet"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsxs)(t.strong,{children:["Always use ",(0,r.jsx)(t.code,{children:"--network statusSepolia"})]})," for deployments and verification"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Blockscout verification"}),": Status Network uses Blockscout, not Etherscan"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Pre-configured frontend"}),": NextJS automatically connects to Status Network"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,r.jsx)(t.p,{children:"For detailed configuration options, troubleshooting, and advanced usage:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Check the ",(0,r.jsx)(t.a,{href:"https://github.com/status-im/status-network-scaffold-extension",children:"extension README"})," for comprehensive documentation"]}),"\n",(0,r.jsxs)(t.li,{children:["Join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," and ask for support"]}),"\n",(0,r.jsxs)(t.li,{children:["View our ",(0,r.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/dad64608.f2f57683.js b/assets/js/dad64608.f2f57683.js new file mode 100644 index 0000000..27ce5b6 --- /dev/null +++ b/assets/js/dad64608.f2f57683.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2610],{6247:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-se2","title":"Using Scaffold-ETH 2: Deploy on Status Network L2","description":"Deploy smart contracts on Status Network with Scaffold-ETH 2. A quick start for developers to integrate gasless UX and reputation-aware project features.","source":"@site/docs/build-for-karma/deploying-contracts/using-se2.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-se2","permalink":"/build-for-karma/deploying-contracts/using-se2","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-se2.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Using Scaffold-ETH 2: Deploy on Status Network L2","description":"Deploy smart contracts on Status Network with Scaffold-ETH 2. A quick start for developers to integrate gasless UX and reputation-aware project features.","keywords":["Scaffold-ETH 2","smart contract deployment","Status Network development","Foundry","Hardhat","NextJS","web3 development"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"\ud83c\udf9b\ufe0f Using Remix","permalink":"/build-for-karma/deploying-contracts/using-remix"}}');var r=n(4848),o=n(8453);const a={title:"Using Scaffold-ETH 2: Deploy on Status Network L2",description:"Deploy smart contracts on Status Network with Scaffold-ETH 2. A quick start for developers to integrate gasless UX and reputation-aware project features.",keywords:["Scaffold-ETH 2","smart contract deployment","Status Network development","Foundry","Hardhat","NextJS","web3 development"]},i="Using Scaffold-ETH 2 to Deploy Smart Contracts",l={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Quick Start",id:"quick-start",level:2},{value:"Key Points",id:"key-points",level:2},{value:"Support",id:"support",level:2}];function d(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"using-scaffold-eth-2-to-deploy-smart-contracts",children:"Using Scaffold-ETH 2 to Deploy Smart Contracts"})}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.a,{href:"https://github.com/status-im/status-network-scaffold-extension",children:"Status Network Scaffold-ETH 2 extension"})," provides a pre-configured setup for deploying smart contracts on Status Network with both Foundry and Hardhat support, plus a NextJS frontend."]}),"\n",(0,r.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Yarn"}),": Package manager for JavaScript projects"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Foundry"})," (optional): If you choose the Foundry workflow"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Ethereum Wallet"})," (optional): An EVM wallet private key for test, but it's okay if you don't have one"]}),"\n"]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Note"}),": Status Network supports gasless transactions, so testnet ETH is optional. If you still need testnet ETH, get it from our ",(0,r.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"}),"."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Install the extension:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npx create-eth@latest -e status-im/status-network-scaffold-extension\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Configure your account:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn generate\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Deploy to Status Network:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn deploy --network statusSepolia\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Verify your contract:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"# Hardhat\nyarn hardhat:hardhat-verify --network statusSepolia \n# Foundry\nyarn status:verify --network statusSepolia\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Launch the frontend:"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"yarn start\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"key-points",children:"Key Points"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"No local chain needed"}),": Deploy directly to testnet"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsxs)(t.strong,{children:["Always use ",(0,r.jsx)(t.code,{children:"--network statusSepolia"})]})," for deployments and verification"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Blockscout verification"}),": Status Network uses Blockscout, not Etherscan"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Pre-configured frontend"}),": NextJS automatically connects to Status Network"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,r.jsx)(t.p,{children:"For detailed configuration options, troubleshooting, and advanced usage:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Check the ",(0,r.jsx)(t.a,{href:"https://github.com/status-im/status-network-scaffold-extension",children:"extension README"})," for comprehensive documentation"]}),"\n",(0,r.jsxs)(t.li,{children:["Join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," and ask for support"]}),"\n",(0,r.jsxs)(t.li,{children:["View our ",(0,r.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>i});var s=n(6540);const r={},o=s.createContext(r);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ddc55e77.12c8b312.js b/assets/js/ddc55e77.12c8b312.js new file mode 100644 index 0000000..b0abbab --- /dev/null +++ b/assets/js/ddc55e77.12c8b312.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[8551],{8453:(t,e,r)=>{r.d(e,{R:()=>a,x:()=>c});var s=r(6540);const o={},n=s.createContext(o);function a(t){const e=s.useContext(n);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:a(t.components),s.createElement(n.Provider,{value:e},t.children)}},8646:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"tools/core-infrastructure/block-explorers","title":"Block Explorers: View Status Network Transactions","description":"Monitor gasless transactions on Status Network. Use our block explorers to verify smart contracts and track on-chain activity for mainnet and testnet.","source":"@site/docs/tools/core-infrastructure/block-explorers.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/block-explorers","permalink":"/tools/core-infrastructure/block-explorers","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/block-explorers.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Block Explorers: View Status Network Transactions","description":"Monitor gasless transactions on Status Network. Use our block explorers to verify smart contracts and track on-chain activity for mainnet and testnet.","keywords":["block explorer","transaction tracking","smart contract verification"],"slug":"/tools/core-infrastructure/block-explorers"},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udeb0 Testnet Faucets","permalink":"/tools/core-infrastructure/testnet-faucets"},"next":{"title":"\ud83d\udd0c JSON-RPC API","permalink":"/tools/rpc/json-rpc"}}');var o=r(4848),n=r(8453);const a={title:"Block Explorers: View Status Network Transactions",description:"Monitor gasless transactions on Status Network. Use our block explorers to verify smart contracts and track on-chain activity for mainnet and testnet.",keywords:["block explorer","transaction tracking","smart contract verification"],slug:"/tools/core-infrastructure/block-explorers"},c="Block Explorers",i={},l=[{value:"Status Network Mainnet",id:"status-network-mainnet",level:2},{value:"Status Network Testnet (Sepolia)",id:"status-network-testnet-sepolia",level:2},{value:"Status Network Testnet (Hoodi)",id:"status-network-testnet-hoodi",level:2}];function d(t){const e={a:"a",em:"em",h1:"h1",h2:"h2",header:"header",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.header,{children:(0,o.jsx)(e.h1,{id:"block-explorers",children:"Block Explorers"})}),"\n",(0,o.jsx)(e.h2,{id:"status-network-mainnet",children:"Status Network Mainnet"}),"\n",(0,o.jsx)(e.p,{children:(0,o.jsx)(e.em,{children:"Coming soon."})}),"\n",(0,o.jsx)(e.h2,{id:"status-network-testnet-sepolia",children:"Status Network Testnet (Sepolia)"}),"\n",(0,o.jsxs)(e.table,{children:[(0,o.jsx)(e.thead,{children:(0,o.jsxs)(e.tr,{children:[(0,o.jsx)(e.th,{children:"Explorer"}),(0,o.jsx)(e.th,{children:"URL"}),(0,o.jsx)(e.th,{children:"Features"})]})}),(0,o.jsx)(e.tbody,{children:(0,o.jsxs)(e.tr,{children:[(0,o.jsx)(e.td,{children:"Sepoliascan"}),(0,o.jsx)(e.td,{children:(0,o.jsx)(e.a,{href:"https://sepoliascan.status.network",children:"sepoliascan.status.network"})}),(0,o.jsx)(e.td,{children:"Search transactions, verify and interact with smart contracts, track balances"})]})})]}),"\n",(0,o.jsxs)(e.p,{children:["For contract verification, visit the ",(0,o.jsx)(e.a,{href:"https://sepoliascan.status.network/contract-verification",children:"Contract Verification"})," page on Sepoliascan."]}),"\n",(0,o.jsxs)(e.p,{children:["L1 activity on Sepolia can be tracked via ",(0,o.jsx)(e.a,{href:"https://sepolia.etherscan.io",children:"Sepolia Etherscan"}),"."]}),"\n",(0,o.jsx)(e.h2,{id:"status-network-testnet-hoodi",children:"Status Network Testnet (Hoodi)"}),"\n",(0,o.jsx)(e.p,{children:(0,o.jsx)(e.em,{children:"Coming soon."})})]})}function u(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}}}]); \ No newline at end of file diff --git a/assets/js/ddc55e77.5b7401ed.js b/assets/js/ddc55e77.5b7401ed.js deleted file mode 100644 index b83a560..0000000 --- a/assets/js/ddc55e77.5b7401ed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[8551],{8453:(t,e,r)=>{r.d(e,{R:()=>i,x:()=>a});var o=r(6540);const s={},n=o.createContext(s);function i(t){const e=o.useContext(n);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),o.createElement(n.Provider,{value:e},t.children)}},8646:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"tools/core-infrastructure/block-explorers","title":"Block Explorers","description":"Status Network block explorer for viewing transactions, verifying contracts, and monitoring network activity.","source":"@site/docs/tools/core-infrastructure/block-explorers.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/block-explorers","permalink":"/tools/core-infrastructure/block-explorers","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/block-explorers.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"Block Explorers","description":"Status Network block explorer for viewing transactions, verifying contracts, and monitoring network activity.","keywords":["block explorer","transaction tracking","smart contract verification"],"slug":"/tools/core-infrastructure/block-explorers"},"sidebar":"toolsSidebar","previous":{"title":"\ud83d\udeb0 Testnet Faucets","permalink":"/tools/core-infrastructure/testnet-faucets"},"next":{"title":"\ud83d\udd0c JSON-RPC API","permalink":"/tools/rpc/json-rpc"}}');var s=r(4848),n=r(8453);const i={title:"Block Explorers",description:"Status Network block explorer for viewing transactions, verifying contracts, and monitoring network activity.",keywords:["block explorer","transaction tracking","smart contract verification"],slug:"/tools/core-infrastructure/block-explorers"},a=void 0,c={},l=[{value:"Status Network Mainnet",id:"status-network-mainnet",level:2},{value:"Status Network Testnet (Sepolia)",id:"status-network-testnet-sepolia",level:2},{value:"Status Network Testnet (Hoodi)",id:"status-network-testnet-hoodi",level:2}];function d(t){const e={a:"a",em:"em",h2:"h2",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h2,{id:"status-network-mainnet",children:"Status Network Mainnet"}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.em,{children:"Coming soon."})}),"\n",(0,s.jsx)(e.h2,{id:"status-network-testnet-sepolia",children:"Status Network Testnet (Sepolia)"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Explorer"}),(0,s.jsx)(e.th,{children:"URL"}),(0,s.jsx)(e.th,{children:"Features"})]})}),(0,s.jsx)(e.tbody,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Sepoliascan"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://sepoliascan.status.network",children:"sepoliascan.status.network"})}),(0,s.jsx)(e.td,{children:"Search transactions, verify and interact with smart contracts, track balances"})]})})]}),"\n",(0,s.jsxs)(e.p,{children:["For contract verification, visit the ",(0,s.jsx)(e.a,{href:"https://sepoliascan.status.network/contract-verification",children:"Contract Verification"})," page on Sepoliascan."]}),"\n",(0,s.jsxs)(e.p,{children:["L1 activity on Sepolia can be tracked via ",(0,s.jsx)(e.a,{href:"https://sepolia.etherscan.io",children:"Sepolia Etherscan"}),"."]}),"\n",(0,s.jsx)(e.h2,{id:"status-network-testnet-hoodi",children:"Status Network Testnet (Hoodi)"}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.em,{children:"Coming soon."})})]})}function u(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(d,{...t})}):d(t)}}}]); \ No newline at end of file diff --git a/assets/js/eeddb806.30704646.js b/assets/js/eeddb806.30704646.js new file mode 100644 index 0000000..01e8547 --- /dev/null +++ b/assets/js/eeddb806.30704646.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[345],{8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>s});var r=n(6540);const o={},a=r.createContext(o);function i(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(a.Provider,{value:t},e.children)}},9232:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-hardhat","title":"Using Hardhat: Smart Contract Deployment on Status","description":"Tutorial for deploying on Status Network using Hardhat and TypeScript. Configure your environment for gasless transactions and reputation-aware dApps.","source":"@site/docs/build-for-karma/deploying-contracts/using-hardhat.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-hardhat","permalink":"/build-for-karma/deploying-contracts/using-hardhat","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-hardhat.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Using Hardhat: Smart Contract Deployment on Status","description":"Tutorial for deploying on Status Network using Hardhat and TypeScript. Configure your environment for gasless transactions and reputation-aware dApps.","keywords":["Hardhat tutorial","smart contract deployment","Status Network development","TypeScript","blockchain development","web3 development"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"Deploy Your First Contract: Gasless Development Guide","permalink":"/build-for-karma/deploying-contracts"},"next":{"title":"\u2692\ufe0f Using Foundry","permalink":"/build-for-karma/deploying-contracts/using-foundry"}}');var o=n(4848),a=n(8453);const i={title:"Using Hardhat: Smart Contract Deployment on Status",description:"Tutorial for deploying on Status Network using Hardhat and TypeScript. Configure your environment for gasless transactions and reputation-aware dApps.",keywords:["Hardhat tutorial","smart contract deployment","Status Network development","TypeScript","blockchain development","web3 development"]},s="Using Hardhat to Deploy Smart Contracts",l={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"What You'll Accomplish",id:"what-youll-accomplish",level:2},{value:"Steps",id:"steps",level:2},{value:"1. Initialize a Hardhat TypeScript Project",id:"1-initialize-a-hardhat-typescript-project",level:3},{value:"2. Writing the Smart Contract",id:"2-writing-the-smart-contract",level:3},{value:"3. Configuring Hardhat for Status Network",id:"3-configuring-hardhat-for-status-network",level:3},{value:"4. Create Ignition Deployment Module",id:"4-create-ignition-deployment-module",level:3},{value:"5. Deploy the Contract",id:"5-deploy-the-contract",level:3},{value:"7. Interact with Your Contract",id:"7-interact-with-your-contract",level:3},{value:"Support",id:"support",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"using-hardhat-to-deploy-smart-contracts",children:"Using Hardhat to Deploy Smart Contracts"})}),"\n",(0,o.jsx)(t.p,{children:"This tutorial will guide you through the process of deploying a smart contract on Status Network testnet using Hardhat, Hardhat Ignition, and TypeScript."}),"\n",(0,o.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,o.jsx)(t.p,{children:"Before you begin, ensure you have the following:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Node.js and npm"}),": Download and install from the ",(0,o.jsx)(t.a,{href:"https://nodejs.org/",children:"official Node.js website"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Ethereum Wallet"}),": MetaMask or another wallet with a private key for Status Network testnet"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Testnet ETH"}),": You'll need Status Network testnet ETH","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Get Status Network testnet ETH from our ",(0,o.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"})]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Basic Knowledge"}),": Familiarity with Solidity, Hardhat, and command line"]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"what-youll-accomplish",children:"What You'll Accomplish"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Initialize a TypeScript-based Hardhat project"}),"\n",(0,o.jsx)(t.li,{children:"Write a basic Ethereum smart contract"}),"\n",(0,o.jsx)(t.li,{children:"Configure Hardhat for Status Network testnet deployment"}),"\n",(0,o.jsx)(t.li,{children:"Deploy your smart contract using Hardhat Ignition"}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,o.jsx)(t.h3,{id:"1-initialize-a-hardhat-typescript-project",children:"1. Initialize a Hardhat TypeScript Project"}),"\n",(0,o.jsx)(t.p,{children:"First, create and set up your project:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"mkdir my-hardhat-project && cd my-hardhat-project\nnpm init -y\nnpm install --save-dev hardhat @nomicfoundation/hardhat-toolbox dotenv\nnpx hardhat init\n"})}),"\n",(0,o.jsx)(t.p,{children:'When prompted, select "Create a TypeScript project" to set up a TypeScript-based Hardhat project.'}),"\n",(0,o.jsx)(t.p,{children:"Set up your environment variables:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:'# Create a .env file\ntouch .env\n\n# Add your private key (never commit this file!)\necho "PRIVATE_KEY=your_private_key_here" >> .env\n'})}),"\n",(0,o.jsx)(t.h3,{id:"2-writing-the-smart-contract",children:"2. Writing the Smart Contract"}),"\n",(0,o.jsxs)(t.p,{children:["Create ",(0,o.jsx)(t.code,{children:"contracts/HelloWorld.sol"}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\ncontract HelloWorld {\n string public greet = "Hello, Status Network!";\n\n function setGreet(string memory _greet) public {\n greet = _greet;\n }\n\n function getGreet() public view returns (string memory) {\n return greet;\n }\n}\n'})}),"\n",(0,o.jsx)(t.h3,{id:"3-configuring-hardhat-for-status-network",children:"3. Configuring Hardhat for Status Network"}),"\n",(0,o.jsxs)(t.p,{children:["Update ",(0,o.jsx)(t.code,{children:"hardhat.config.ts"}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-typescript",children:'import { HardhatUserConfig } from "hardhat/config";\nimport "@nomicfoundation/hardhat-toolbox";\nimport * as dotenv from "dotenv";\n\ndotenv.config();\n\nconst PRIVATE_KEY = process.env.PRIVATE_KEY || "";\n\nconst config: HardhatUserConfig = {\n solidity: {\n version: "0.8.24",\n settings: {\n evmVersion: "paris"\n },\n },\n networks: {\n statusTestnet: {\n url: "https://public.sepolia.rpc.status.network",\n chainId: 1660990954,\n accounts: [PRIVATE_KEY],\n },\n },\n};\n\nexport default config;\n'})}),"\n",(0,o.jsx)(t.h3,{id:"4-create-ignition-deployment-module",children:"4. Create Ignition Deployment Module"}),"\n",(0,o.jsxs)(t.p,{children:["Create ",(0,o.jsx)(t.code,{children:"ignition/modules/HelloWorld.ts"}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-typescript",children:'import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";\n\nexport default buildModule("HelloWorld", (m) => {\n const helloWorld = m.contract("HelloWorld");\n \n return { helloWorld };\n});\n'})}),"\n",(0,o.jsx)(t.h3,{id:"5-deploy-the-contract",children:"5. Deploy the Contract"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"npx hardhat compile\nnpx hardhat ignition deploy ignition/modules/HelloWorld.ts --network statusTestnet\n"})}),"\n",(0,o.jsxs)(t.p,{children:["The deployment will create a new directory ",(0,o.jsx)(t.code,{children:"ignition/deployments"})," containing your deployment artifacts and history."]}),"\n",(0,o.jsx)(t.h3,{id:"7-interact-with-your-contract",children:"7. Interact with Your Contract"}),"\n",(0,o.jsxs)(t.p,{children:["Create ",(0,o.jsx)(t.code,{children:"scripts/interact.ts"}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-typescript",children:'import { ethers } from "hardhat";\nimport { HelloWorld } from "../typechain-types";\n\nasync function main() {\n const contractAddress = "0x0d8a93870494Fa21ec39602f31Aa67C9Fed5604f";\n const HelloWorld = await ethers.getContractFactory("HelloWorld");\n const contract = HelloWorld.attach(contractAddress) as HelloWorld;\n\n // Read current greeting\n const greeting = await contract.getGreet();\n console.log("Current greeting:", greeting);\n\n // Update greeting\n const tx = await contract.setGreet("Hello from Status Network!");\n await tx.wait();\n console.log("Greeting updated!");\n\n // Read updated greeting\n const newGreeting = await contract.getGreet();\n console.log("New greeting:", newGreeting);\n}\n\nmain().catch((error) => {\n console.error(error);\n process.exitCode = 1;\n});\n'})}),"\n",(0,o.jsx)(t.p,{children:"Run the interaction script:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"npx hardhat run scripts/interact.ts --network statusTestnet\n"})}),"\n",(0,o.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,o.jsx)(t.p,{children:"If you encounter any issues:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Join our ",(0,o.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})]}),"\n",(0,o.jsxs)(t.li,{children:["View our ",(0,o.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/eeddb806.9d348bbd.js b/assets/js/eeddb806.9d348bbd.js deleted file mode 100644 index c5fb547..0000000 --- a/assets/js/eeddb806.9d348bbd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[345],{8453:(t,e,n)=>{n.d(e,{R:()=>i,x:()=>s});var r=n(6540);const o={},a=r.createContext(o);function i(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:i(t.components),r.createElement(a.Provider,{value:e},t.children)}},9232:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"build-for-karma/deploying-contracts/using-hardhat","title":"Using Hardhat with Status Network","description":"Step-by-step tutorial for deploying smart contracts on Status Network using Hardhat and TypeScript. Learn about project setup, configuration, and contract deployment.","source":"@site/docs/build-for-karma/deploying-contracts/using-hardhat.md","sourceDirName":"build-for-karma/deploying-contracts","slug":"/build-for-karma/deploying-contracts/using-hardhat","permalink":"/build-for-karma/deploying-contracts/using-hardhat","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/deploying-contracts/using-hardhat.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"Using Hardhat with Status Network","description":"Step-by-step tutorial for deploying smart contracts on Status Network using Hardhat and TypeScript. Learn about project setup, configuration, and contract deployment.","keywords":["Hardhat tutorial","smart contract deployment","Status Network development","TypeScript","blockchain development","web3 development"]},"sidebar":"buildForKarmaSidebar","previous":{"title":"Deploy Your First Contract","permalink":"/build-for-karma/deploying-contracts"},"next":{"title":"\u2692\ufe0f Using Foundry","permalink":"/build-for-karma/deploying-contracts/using-foundry"}}');var o=n(4848),a=n(8453);const i={title:"Using Hardhat with Status Network",description:"Step-by-step tutorial for deploying smart contracts on Status Network using Hardhat and TypeScript. Learn about project setup, configuration, and contract deployment.",keywords:["Hardhat tutorial","smart contract deployment","Status Network development","TypeScript","blockchain development","web3 development"]},s="Using Hardhat to Deploy Smart Contracts",l={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"What You'll Accomplish",id:"what-youll-accomplish",level:2},{value:"Steps",id:"steps",level:2},{value:"1. Initialize a Hardhat TypeScript Project",id:"1-initialize-a-hardhat-typescript-project",level:3},{value:"2. Writing the Smart Contract",id:"2-writing-the-smart-contract",level:3},{value:"3. Configuring Hardhat for Status Network",id:"3-configuring-hardhat-for-status-network",level:3},{value:"4. Create Ignition Deployment Module",id:"4-create-ignition-deployment-module",level:3},{value:"5. Deploy the Contract",id:"5-deploy-the-contract",level:3},{value:"7. Interact with Your Contract",id:"7-interact-with-your-contract",level:3},{value:"Support",id:"support",level:2}];function d(t){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.header,{children:(0,o.jsx)(e.h1,{id:"using-hardhat-to-deploy-smart-contracts",children:"Using Hardhat to Deploy Smart Contracts"})}),"\n",(0,o.jsx)(e.p,{children:"This tutorial will guide you through the process of deploying a smart contract on Status Network testnet using Hardhat, Hardhat Ignition, and TypeScript."}),"\n",(0,o.jsx)(e.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,o.jsx)(e.p,{children:"Before you begin, ensure you have the following:"}),"\n",(0,o.jsxs)(e.ul,{children:["\n",(0,o.jsxs)(e.li,{children:[(0,o.jsx)(e.strong,{children:"Node.js and npm"}),": Download and install from the ",(0,o.jsx)(e.a,{href:"https://nodejs.org/",children:"official Node.js website"})]}),"\n",(0,o.jsxs)(e.li,{children:[(0,o.jsx)(e.strong,{children:"Ethereum Wallet"}),": MetaMask or another wallet with a private key for Status Network testnet"]}),"\n",(0,o.jsxs)(e.li,{children:[(0,o.jsx)(e.strong,{children:"Testnet ETH"}),": You'll need Status Network testnet ETH","\n",(0,o.jsxs)(e.ul,{children:["\n",(0,o.jsxs)(e.li,{children:["Get Status Network testnet ETH from our ",(0,o.jsx)(e.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Faucet"})]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(e.li,{children:[(0,o.jsx)(e.strong,{children:"Basic Knowledge"}),": Familiarity with Solidity, Hardhat, and command line"]}),"\n"]}),"\n",(0,o.jsx)(e.h2,{id:"what-youll-accomplish",children:"What You'll Accomplish"}),"\n",(0,o.jsxs)(e.ul,{children:["\n",(0,o.jsx)(e.li,{children:"Initialize a TypeScript-based Hardhat project"}),"\n",(0,o.jsx)(e.li,{children:"Write a basic Ethereum smart contract"}),"\n",(0,o.jsx)(e.li,{children:"Configure Hardhat for Status Network testnet deployment"}),"\n",(0,o.jsx)(e.li,{children:"Deploy your smart contract using Hardhat Ignition"}),"\n"]}),"\n",(0,o.jsx)(e.h2,{id:"steps",children:"Steps"}),"\n",(0,o.jsx)(e.h3,{id:"1-initialize-a-hardhat-typescript-project",children:"1. Initialize a Hardhat TypeScript Project"}),"\n",(0,o.jsx)(e.p,{children:"First, create and set up your project:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"mkdir my-hardhat-project && cd my-hardhat-project\nnpm init -y\nnpm install --save-dev hardhat @nomicfoundation/hardhat-toolbox dotenv\nnpx hardhat init\n"})}),"\n",(0,o.jsx)(e.p,{children:'When prompted, select "Create a TypeScript project" to set up a TypeScript-based Hardhat project.'}),"\n",(0,o.jsx)(e.p,{children:"Set up your environment variables:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:'# Create a .env file\ntouch .env\n\n# Add your private key (never commit this file!)\necho "PRIVATE_KEY=your_private_key_here" >> .env\n'})}),"\n",(0,o.jsx)(e.h3,{id:"2-writing-the-smart-contract",children:"2. Writing the Smart Contract"}),"\n",(0,o.jsxs)(e.p,{children:["Create ",(0,o.jsx)(e.code,{children:"contracts/HelloWorld.sol"}),":"]}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\ncontract HelloWorld {\n string public greet = "Hello, Status Network!";\n\n function setGreet(string memory _greet) public {\n greet = _greet;\n }\n\n function getGreet() public view returns (string memory) {\n return greet;\n }\n}\n'})}),"\n",(0,o.jsx)(e.h3,{id:"3-configuring-hardhat-for-status-network",children:"3. Configuring Hardhat for Status Network"}),"\n",(0,o.jsxs)(e.p,{children:["Update ",(0,o.jsx)(e.code,{children:"hardhat.config.ts"}),":"]}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-typescript",children:'import { HardhatUserConfig } from "hardhat/config";\nimport "@nomicfoundation/hardhat-toolbox";\nimport * as dotenv from "dotenv";\n\ndotenv.config();\n\nconst PRIVATE_KEY = process.env.PRIVATE_KEY || "";\n\nconst config: HardhatUserConfig = {\n solidity: {\n version: "0.8.24",\n settings: {\n evmVersion: "paris"\n },\n },\n networks: {\n statusTestnet: {\n url: "https://public.sepolia.rpc.status.network",\n chainId: 1660990954,\n accounts: [PRIVATE_KEY],\n },\n },\n};\n\nexport default config;\n'})}),"\n",(0,o.jsx)(e.h3,{id:"4-create-ignition-deployment-module",children:"4. Create Ignition Deployment Module"}),"\n",(0,o.jsxs)(e.p,{children:["Create ",(0,o.jsx)(e.code,{children:"ignition/modules/HelloWorld.ts"}),":"]}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-typescript",children:'import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";\n\nexport default buildModule("HelloWorld", (m) => {\n const helloWorld = m.contract("HelloWorld");\n \n return { helloWorld };\n});\n'})}),"\n",(0,o.jsx)(e.h3,{id:"5-deploy-the-contract",children:"5. Deploy the Contract"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"npx hardhat compile\nnpx hardhat ignition deploy ignition/modules/HelloWorld.ts --network statusTestnet\n"})}),"\n",(0,o.jsxs)(e.p,{children:["The deployment will create a new directory ",(0,o.jsx)(e.code,{children:"ignition/deployments"})," containing your deployment artifacts and history."]}),"\n",(0,o.jsx)(e.h3,{id:"7-interact-with-your-contract",children:"7. Interact with Your Contract"}),"\n",(0,o.jsxs)(e.p,{children:["Create ",(0,o.jsx)(e.code,{children:"scripts/interact.ts"}),":"]}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-typescript",children:'import { ethers } from "hardhat";\nimport { HelloWorld } from "../typechain-types";\n\nasync function main() {\n const contractAddress = "0x0d8a93870494Fa21ec39602f31Aa67C9Fed5604f";\n const HelloWorld = await ethers.getContractFactory("HelloWorld");\n const contract = HelloWorld.attach(contractAddress) as HelloWorld;\n\n // Read current greeting\n const greeting = await contract.getGreet();\n console.log("Current greeting:", greeting);\n\n // Update greeting\n const tx = await contract.setGreet("Hello from Status Network!");\n await tx.wait();\n console.log("Greeting updated!");\n\n // Read updated greeting\n const newGreeting = await contract.getGreet();\n console.log("New greeting:", newGreeting);\n}\n\nmain().catch((error) => {\n console.error(error);\n process.exitCode = 1;\n});\n'})}),"\n",(0,o.jsx)(e.p,{children:"Run the interaction script:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"npx hardhat run scripts/interact.ts --network statusTestnet\n"})}),"\n",(0,o.jsx)(e.h2,{id:"support",children:"Support"}),"\n",(0,o.jsx)(e.p,{children:"If you encounter any issues:"}),"\n",(0,o.jsxs)(e.ul,{children:["\n",(0,o.jsxs)(e.li,{children:["Join our ",(0,o.jsx)(e.a,{href:"https://t.me/statusl2",children:"Telegram Community"})]}),"\n",(0,o.jsxs)(e.li,{children:["View our ",(0,o.jsx)(e.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n"]})]})}function h(t={}){const{wrapper:e}={...(0,a.R)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}}}]); \ No newline at end of file diff --git a/assets/js/f03d57b7.3593b81d.js b/assets/js/f03d57b7.3593b81d.js new file mode 100644 index 0000000..6847f18 --- /dev/null +++ b/assets/js/f03d57b7.3593b81d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9797],{2279:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"overview/tokenomics/economic-model","title":"Economic Model: Yield-Backed Network Sustainability","description":"Status Network\'s economic model: replacing gas fees with native yield from L1 staking and lending. Sustainable funding for a truly gasless L2 ecosystem.","source":"@site/docs/overview/tokenomics/economic-model.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/economic-model","permalink":"/overview/tokenomics/economic-model","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/economic-model.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Economic Model: Yield-Backed Network Sustainability","description":"Status Network\'s economic model: replacing gas fees with native yield from L1 staking and lending. Sustainable funding for a truly gasless L2 ecosystem.","keywords":["Status Network economics","L2 revenue","yield commission","DEX fees","sustainable blockchain","gasless blockchain","crypto economics"]},"sidebar":"homeSidebar","previous":{"title":"\u26a1 Quick Start","permalink":"/overview/introduction/quick-start"},"next":{"title":"\ud83d\udcb0 Public Funding","permalink":"/overview/tokenomics/public-funding"}}');var i=n(4848),o=n(8453);const a={title:"Economic Model: Yield-Backed Network Sustainability",description:"Status Network's economic model: replacing gas fees with native yield from L1 staking and lending. Sustainable funding for a truly gasless L2 ecosystem.",keywords:["Status Network economics","L2 revenue","yield commission","DEX fees","sustainable blockchain","gasless blockchain","crypto economics"]},r="Economic Model",c={},l=[{value:"Revenue Streams",id:"revenue-streams",level:2}];function d(e){const t={h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"economic-model",children:"Economic Model"})}),"\n",(0,i.jsx)(t.p,{children:"Unlike traditional L2s that generate revenue from gas fees, Status Network operates on a radically different paradigm: users and applications do not pay transaction fees. This necessitates alternative revenue sources to maintain and sustain the network. As gas fees trend toward zero and rollups move toward decentralization, the business model of L2s must shift from execution-based revenue (sequencer fees) to monetizing asset trading volume and yield-bearing total value locked (TVL) on the network."}),"\n",(0,i.jsx)(t.h2,{id:"revenue-streams",children:"Revenue Streams"}),"\n",(0,i.jsx)(t.p,{children:"To achieve sustainability, Status Network derives revenue from the following sources:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Native Yield Commission"}),": Assets bridged to Status Network (ETH and DAI initially) are rehypothecated into yield-bearing equivalents (stETH and sDAI). A portion of the yield generated (30%) is allocated to the network's operational costs."]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Native DEX Swap Fees"}),": Status Network features a native DEX where trading fees contribute to network operation. Native DEX liquidity providers can earn extra incentives from the native yield on top of the usual LP fees."]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Premium Gas Fees"}),": Users exceeding their free transaction quota must pay a premium fee, which is split between Status Network and RLN (the spam prevention mechanism), incentivizing fair usage and discouraging abuse."]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Future Native Apps"}),": The network will later introduce additional revenue streams, such as a lending market, NFT marketplace, and token launchpad, each contributing a percentage of generated fees back into the L2 operation."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"This model ensures that Status Network remains economically sustainable while offering free transactions. By leveraging TVL and its associated native yield as well as transaction volume, Status Network aligns incentives between users, liquidity providers, and developers, creating a self-sustaining ecosystem without reliance on inflationary token emissions."})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>r});var s=n(6540);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f03d57b7.e8da4599.js b/assets/js/f03d57b7.e8da4599.js deleted file mode 100644 index 45f527e..0000000 --- a/assets/js/f03d57b7.e8da4599.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[9797],{2279:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"overview/tokenomics/economic-model","title":"Economic Model","description":"Overview of Status Network\'s economic model including revenue streams, sustainable funding approach, and how the network achieves economic sustainability without relying on gas fees.","source":"@site/docs/overview/tokenomics/economic-model.md","sourceDirName":"overview/tokenomics","slug":"/overview/tokenomics/economic-model","permalink":"/overview/tokenomics/economic-model","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/tokenomics/economic-model.md","tags":[],"version":"current","lastUpdatedAt":1770396574000,"frontMatter":{"title":"Economic Model","description":"Overview of Status Network\'s economic model including revenue streams, sustainable funding approach, and how the network achieves economic sustainability without relying on gas fees.","keywords":["Status Network economics","L2 revenue","yield commission","DEX fees","sustainable blockchain","gasless blockchain","crypto economics"]},"sidebar":"homeSidebar","previous":{"title":"\u26a1 Quick Start","permalink":"/overview/introduction/quick-start"},"next":{"title":"\ud83d\udcb0 Public Funding","permalink":"/overview/tokenomics/public-funding"}}');var s=t(4848),o=t(8453);const a={title:"Economic Model",description:"Overview of Status Network's economic model including revenue streams, sustainable funding approach, and how the network achieves economic sustainability without relying on gas fees.",keywords:["Status Network economics","L2 revenue","yield commission","DEX fees","sustainable blockchain","gasless blockchain","crypto economics"]},r="Economic Model",c={},l=[{value:"Revenue Streams",id:"revenue-streams",level:2}];function d(e){const n={h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"economic-model",children:"Economic Model"})}),"\n",(0,s.jsx)(n.p,{children:"Unlike traditional L2s that generate revenue from gas fees, Status Network operates on a radically different paradigm: users and applications do not pay transaction fees. This necessitates alternative revenue sources to maintain and sustain the network. As gas fees trend toward zero and rollups move toward decentralization, the business model of L2s must shift from execution-based revenue (sequencer fees) to monetizing asset trading volume and yield-bearing total value locked (TVL) on the network."}),"\n",(0,s.jsx)(n.h2,{id:"revenue-streams",children:"Revenue Streams"}),"\n",(0,s.jsx)(n.p,{children:"To achieve sustainability, Status Network derives revenue from the following sources:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Native Yield Commission"}),": Assets bridged to Status Network (ETH and DAI initially) are rehypothecated into yield-bearing equivalents (stETH and sDAI). A portion of the yield generated (30%) is allocated to the network's operational costs."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Native DEX Swap Fees"}),": Status Network features a native DEX where trading fees contribute to network operation. Native DEX liquidity providers can earn extra incentives from the native yield on top of the usual LP fees."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Premium Gas Fees"}),": Users exceeding their free transaction quota must pay a premium fee, which is split between Status Network and RLN (the spam prevention mechanism), incentivizing fair usage and discouraging abuse."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Future Native Apps"}),": The network will later introduce additional revenue streams, such as a lending market, NFT marketplace, and token launchpad, each contributing a percentage of generated fees back into the L2 operation."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"This model ensures that Status Network remains economically sustainable while offering free transactions. By leveraging TVL and its associated native yield as well as transaction volume, Status Network aligns incentives between users, liquidity providers, and developers, creating a self-sustaining ecosystem without reliance on inflationary token emissions."})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var i=t(6540);const s={},o=i.createContext(s);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f6df0d46.2d4618e9.js b/assets/js/f6df0d46.2d4618e9.js deleted file mode 100644 index 9bbf6bc..0000000 --- a/assets/js/f6df0d46.2d4618e9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5499],{2760:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"tools/core-infrastructure/rpc-endpoints","title":"RPC Endpoints","description":"Official RPC endpoints for Status Network, including configuration guides for MetaMask and Web3 libraries. Learn about available methods, rate limits, and best practices.","source":"@site/docs/tools/core-infrastructure/rpc-endpoints.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/rpc-endpoints","permalink":"/tools/core-infrastructure/rpc-endpoints","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/rpc-endpoints.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"title":"RPC Endpoints","description":"Official RPC endpoints for Status Network, including configuration guides for MetaMask and Web3 libraries. Learn about available methods, rate limits, and best practices.","keywords":["Status Network RPC","JSON-RPC","blockchain API","web3 configuration","MetaMask setup","blockchain development"],"slug":"/tools/core-infrastructure/rpc-endpoints"},"sidebar":"toolsSidebar","previous":{"title":"Tools & Infrastructure","permalink":"/tools"},"next":{"title":"\ud83c\udf09 Bridge","permalink":"/tools/core-infrastructure/bridge"}}');var i=n(4848),r=n(8453),o=n(9227);const a={title:"RPC Endpoints",description:"Official RPC endpoints for Status Network, including configuration guides for MetaMask and Web3 libraries. Learn about available methods, rate limits, and best practices.",keywords:["Status Network RPC","JSON-RPC","blockchain API","web3 configuration","MetaMask setup","blockchain development"],slug:"/tools/core-infrastructure/rpc-endpoints"},l=void 0,c={},d=[{value:"Public RPC URL",id:"public-rpc-url",level:2},{value:"Using the RPC",id:"using-the-rpc",level:2},{value:"Adding to MetaMask",id:"adding-to-metamask",level:3},{value:"Web3 Library Configuration",id:"web3-library-configuration",level:3},{value:"Available Methods",id:"available-methods",level:2},{value:"Rate Limits",id:"rate-limits",level:2},{value:"Support",id:"support",level:2}];function u(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"The Status Network provides public RPC (Remote Procedure Call) endpoints that allow you to interact with the network."}),"\n",(0,i.jsx)(t.h2,{id:"public-rpc-url",children:"Public RPC URL"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"https://public.sepolia.rpc.status.network\n"})}),"\n",(0,i.jsx)(t.h2,{id:"using-the-rpc",children:"Using the RPC"}),"\n",(0,i.jsx)(t.h3,{id:"adding-to-metamask",children:"Adding to MetaMask"}),"\n",(0,i.jsxs)(t.p,{children:["For instructions on adding Status Network to your wallet using this RPC, see our ",(0,i.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Network guide"}),"."]}),"\n",(0,i.jsx)(o.A,{}),"\n",(0,i.jsx)("div",{style:{height:"2rem"}}),"\n",(0,i.jsx)(t.h3,{id:"web3-library-configuration",children:"Web3 Library Configuration"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-javascript",children:"// Web3.js\nconst web3 = new Web3('https://public.sepolia.rpc.status.network');\n\n// Ethers.js v5\nconst provider = new ethers.providers.JsonRpcProvider('https://public.sepolia.rpc.status.network');\n"})}),"\n",(0,i.jsx)(t.h2,{id:"available-methods",children:"Available Methods"}),"\n",(0,i.jsx)(t.p,{children:"The RPC endpoint supports standard Ethereum JSON-RPC methods, including:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"eth_blockNumber"}),": Get the latest block number"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"eth_getBalance"}),": Get account balance"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"eth_sendRawTransaction"}),": Send signed transactions"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"eth_call"}),": Execute a call without creating a transaction"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"eth_getLogs"}),": Get event logs"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"eth_getTransactionByHash"}),": Get transaction details"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"eth_getBlockByNumber"}),": Get block information"]}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["For a complete list of supported RPC methods and detailed specifications, refer to the ",(0,i.jsx)(t.a,{href:"https://docs.linea.build/api/reference",children:"Linea API Reference"}),", as Status Network is based on Linea technology."]}),"\n",(0,i.jsx)(t.h2,{id:"rate-limits",children:"Rate Limits"}),"\n",(0,i.jsx)(t.p,{children:"The public RPC endpoint has rate limiting to ensure fair usage:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"10 requests per second per IP"}),"\n",(0,i.jsx)(t.li,{children:"100,000 requests per day per IP"}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["For higher limits, get in touch with us on our ",(0,i.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"}),"."]}),"\n",(0,i.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,i.jsx)(t.p,{children:"If you experience issues with the RPC endpoint:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Join our ",(0,i.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for support"]}),"\n",(0,i.jsx)(t.li,{children:"Consider implementing a fallback RPC strategy in your application"}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var s=n(6540);const i={},r=s.createContext(i);function o(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:t},e.children)}},9227:(e,t,n)=>{n.d(t,{A:()=>i});n(6540);var s=n(4848);function i(){return(0,s.jsxs)("button",{className:"button button--primary",onClick:async()=>{if("undefined"!=typeof window&&window.ethereum)try{await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:"0x6300B5EA",chainName:"Status Network Testnet",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://public.sepolia.rpc.status.network"],blockExplorerUrls:["https://sepoliascan.status.network"]}]})}catch(e){console.error(e),alert("Failed to add the network to MetaMask. Please try again.")}else alert("MetaMask is not installed. Please install MetaMask first.")},children:[(0,s.jsx)("img",{src:"https://docs.status.network/img/metamask.svg",alt:"MetaMask Fox",style:{width:"20px",height:"20px",marginRight:"8px",verticalAlign:"middle"}}),"Add Status Network Testnet"]})}}}]); \ No newline at end of file diff --git a/assets/js/f6df0d46.d67d8510.js b/assets/js/f6df0d46.d67d8510.js new file mode 100644 index 0000000..01b1733 --- /dev/null +++ b/assets/js/f6df0d46.d67d8510.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[5499],{2760:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"tools/core-infrastructure/rpc-endpoints","title":"Status Network RPC: Public Endpoints & Configuration","description":"Access official Status Network RPC endpoints. Configure MetaMask or your dApp for gasless execution using our rate-limited, privacy-preserving infrastructure.","source":"@site/docs/tools/core-infrastructure/rpc-endpoints.md","sourceDirName":"tools/core-infrastructure","slug":"/tools/core-infrastructure/rpc-endpoints","permalink":"/tools/core-infrastructure/rpc-endpoints","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/tools/core-infrastructure/rpc-endpoints.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"title":"Status Network RPC: Public Endpoints & Configuration","description":"Access official Status Network RPC endpoints. Configure MetaMask or your dApp for gasless execution using our rate-limited, privacy-preserving infrastructure.","keywords":["Status Network RPC","JSON-RPC","blockchain API","web3 configuration","MetaMask setup","blockchain development"],"slug":"/tools/core-infrastructure/rpc-endpoints"},"sidebar":"toolsSidebar","previous":{"title":"Tools & Infrastructure: Build on the Gasless Network","permalink":"/tools"},"next":{"title":"\ud83c\udf09 Bridge","permalink":"/tools/core-infrastructure/bridge"}}');var r=s(4848),i=s(8453),o=s(9227);const a={title:"Status Network RPC: Public Endpoints & Configuration",description:"Access official Status Network RPC endpoints. Configure MetaMask or your dApp for gasless execution using our rate-limited, privacy-preserving infrastructure.",keywords:["Status Network RPC","JSON-RPC","blockchain API","web3 configuration","MetaMask setup","blockchain development"],slug:"/tools/core-infrastructure/rpc-endpoints"},l="RPC Endpoints",c={},d=[{value:"Public RPC URL",id:"public-rpc-url",level:2},{value:"Using the RPC",id:"using-the-rpc",level:2},{value:"Adding to MetaMask",id:"adding-to-metamask",level:3},{value:"Web3 Library Configuration",id:"web3-library-configuration",level:3},{value:"Available Methods",id:"available-methods",level:2},{value:"Rate Limits",id:"rate-limits",level:2},{value:"Support",id:"support",level:2}];function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"rpc-endpoints",children:"RPC Endpoints"})}),"\n",(0,r.jsx)(t.p,{children:"The Status Network provides public RPC (Remote Procedure Call) endpoints that allow you to interact with the network."}),"\n",(0,r.jsx)(t.h2,{id:"public-rpc-url",children:"Public RPC URL"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"https://public.sepolia.rpc.status.network\n"})}),"\n",(0,r.jsx)(t.h2,{id:"using-the-rpc",children:"Using the RPC"}),"\n",(0,r.jsx)(t.h3,{id:"adding-to-metamask",children:"Adding to MetaMask"}),"\n",(0,r.jsxs)(t.p,{children:["For instructions on adding Status Network to your wallet using this RPC, see our ",(0,r.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Network guide"}),"."]}),"\n",(0,r.jsx)(o.A,{}),"\n",(0,r.jsx)("div",{style:{height:"2rem"}}),"\n",(0,r.jsx)(t.h3,{id:"web3-library-configuration",children:"Web3 Library Configuration"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-javascript",children:"// Web3.js\nconst web3 = new Web3('https://public.sepolia.rpc.status.network');\n\n// Ethers.js v5\nconst provider = new ethers.providers.JsonRpcProvider('https://public.sepolia.rpc.status.network');\n"})}),"\n",(0,r.jsx)(t.h2,{id:"available-methods",children:"Available Methods"}),"\n",(0,r.jsx)(t.p,{children:"The RPC endpoint supports standard Ethereum JSON-RPC methods, including:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"eth_blockNumber"}),": Get the latest block number"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"eth_getBalance"}),": Get account balance"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"eth_sendRawTransaction"}),": Send signed transactions"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"eth_call"}),": Execute a call without creating a transaction"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"eth_getLogs"}),": Get event logs"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"eth_getTransactionByHash"}),": Get transaction details"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"eth_getBlockByNumber"}),": Get block information"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For a complete list of supported RPC methods and detailed specifications, refer to the ",(0,r.jsx)(t.a,{href:"https://docs.linea.build/api/reference",children:"Linea API Reference"}),", as Status Network is based on Linea technology."]}),"\n",(0,r.jsx)(t.h2,{id:"rate-limits",children:"Rate Limits"}),"\n",(0,r.jsx)(t.p,{children:"The public RPC endpoint has rate limiting to ensure fair usage:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"10 requests per second per IP"}),"\n",(0,r.jsx)(t.li,{children:"100,000 requests per day per IP"}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For higher limits, get in touch with us on our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"support",children:"Support"}),"\n",(0,r.jsx)(t.p,{children:"If you experience issues with the RPC endpoint:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Community"})," for support"]}),"\n",(0,r.jsx)(t.li,{children:"Consider implementing a fallback RPC strategy in your application"}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>a});var n=s(6540);const r={},i=n.createContext(r);function o(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(i.Provider,{value:t},e.children)}},9227:(e,t,s)=>{s.d(t,{A:()=>r});s(6540);var n=s(4848);function r(){return(0,n.jsxs)("button",{className:"button button--primary",onClick:async()=>{if("undefined"!=typeof window&&window.ethereum)try{await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:"0x6300B5EA",chainName:"Status Network Testnet",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:["https://public.sepolia.rpc.status.network"],blockExplorerUrls:["https://sepoliascan.status.network"]}]})}catch(e){console.error(e),alert("Failed to add the network to MetaMask. Please try again.")}else alert("MetaMask is not installed. Please install MetaMask first.")},children:[(0,n.jsx)("img",{src:"https://docs.status.network/img/metamask.svg",alt:"MetaMask Fox",style:{width:"20px",height:"20px",marginRight:"8px",verticalAlign:"middle"}}),"Add Status Network Testnet"]})}}}]); \ No newline at end of file diff --git a/assets/js/f6ed3658.2288a6d9.js b/assets/js/f6ed3658.2288a6d9.js new file mode 100644 index 0000000..19c212d --- /dev/null +++ b/assets/js/f6ed3658.2288a6d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2316],{6632:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"overview/general-info/gasless-transactions","title":"Gasless Transactions: RLN & Reputation-Based Access","description":"How Status Network enables gasless transactions using Rate Limiting Nullifiers (RLN). Decouple identity from execution with ephemeral, private accounts.","source":"@site/docs/overview/general-info/gasless-transactions.md","sourceDirName":"overview/general-info","slug":"/overview/general-info/gasless-transactions","permalink":"/overview/general-info/gasless-transactions","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/gasless-transactions.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"frontMatter":{"sidebar_label":"\u26fd Gasless Transactions","title":"Gasless Transactions: RLN & Reputation-Based Access","description":"How Status Network enables gasless transactions using Rate Limiting Nullifiers (RLN). Decouple identity from execution with ephemeral, private accounts.","keywords":["Status Network","Gasless Transactions","Linea","RLN","Rate Limiting Nullifier","Karma","Zero-Knowledge Proofs","ZKP","Soulbound Tokens","Blockchain","Layer 2","L2","Spam Prevention"]},"sidebar":"homeSidebar","previous":{"title":"\ud83c\udf10 Network Details","permalink":"/overview/general-info/network-details"},"next":{"title":"\u2795 Add Status Network","permalink":"/overview/general-info/add-status-network"}}');var i=n(4848),t=n(8453);const a={sidebar_label:"\u26fd Gasless Transactions",title:"Gasless Transactions: RLN & Reputation-Based Access",description:"How Status Network enables gasless transactions using Rate Limiting Nullifiers (RLN). Decouple identity from execution with ephemeral, private accounts.",keywords:["Status Network","Gasless Transactions","Linea","RLN","Rate Limiting Nullifier","Karma","Zero-Knowledge Proofs","ZKP","Soulbound Tokens","Blockchain","Layer 2","L2","Spam Prevention"]},o="Gasless Transactions on Status Network",l={},c=[{value:"RLN",id:"rln",level:2},{value:"RLN Membership Management",id:"rln-membership-management",level:3},{value:"System Components",id:"system-components",level:2},{value:"Prover",id:"prover",level:3},{value:"RLN Verifier",id:"rln-verifier",level:3},{value:"Deny List",id:"deny-list",level:3},{value:"linea_estimateGas RPC Modification",id:"linea_estimategas-rpc-modification",level:2}];function d(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",mermaid:"mermaid",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.header,{children:(0,i.jsx)(s.h1,{id:"gasless-transactions-on-status-network",children:"Gasless Transactions on Status Network"})}),"\n",(0,i.jsxs)(s.p,{children:["Status Network aims to introduce gasless transactions at scale. The key component of this gasless approach is Vac's ",(0,i.jsx)(s.a,{href:"https://vac.dev/rln",children:"Rate Limiting Nullifier"}),", which permits transaction rate limitation without the need for traditional gas fees. The document describes the architecture and integration elements needed to safely enable gasless transactions."]}),"\n",(0,i.jsxs)(s.p,{children:["The implementation code for gasless transactions is available in the ",(0,i.jsx)(s.a,{href:"https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components",children:"Status Network monorepo"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["For more information on operational level implementation of our gaslessness, refer to ",(0,i.jsx)(s.a,{href:"/build-for-karma/guides",children:"Karma integration guide"})]}),"\n",(0,i.jsx)(s.h2,{id:"rln",children:"RLN"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.a,{href:"https://vac.dev/rln",children:"RLN"})," is a zero-knowledge system designed to prevent spam without compromising user privacy unless a violation occurs. It replaces traditional gas fees with cryptographic rate limits enforced via ZKPs and Shamir's Secret Sharing."]}),"\n",(0,i.jsx)(s.p,{children:"RLN characteristics:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Zero-Knowledge Proofs:"})," Users generate ZKPs verifying their RLN group membership without revealing their identity. The group membership indicates the maximum gasless transaction throughput for each tier."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Shamir's Secret Sharing and Nullifiers:"})," Users hold a secret key used to generate unique nullifiers for transactions. If a user exceeds their transaction limit within an epoch (e.g., block or timestamp), their secret key becomes recoverable, exposing them."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Spam Detection:"})," Users exceeding limits effectively reveal their secret, leading to penalties like Deny List inclusion, higher future gas costs, or potential token slashing."]}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"rln-membership-management",children:"RLN Membership Management"}),"\n",(0,i.jsx)(s.p,{children:"RLN uses Sparse Merkle Trees to efficiently handle large-scale membership proofs. A benchmarking study determined that a tree height of 20, supporting 1 million accounts, provides optimal performance for proof generation and verification. For scalability beyond 1 million accounts, multiple SMTs can be used with a registry to direct users to the appropriate tree."}),"\n",(0,i.jsx)(s.p,{children:"The Prover includes a Registrar Service that listens for events from the Karma Contract, where Karma is allocated to new addresses. Upon detecting such an event, the Registrar Service onboards the user to the RLN Membership Contract by generating and registering their RLN credentials (identitySecretHash and identityCommitment). The RLN Prover Service generates proofs for transactions, which are streamed via gRPC to the RLN Verifier in the Sequencer. The Verifier stores these proofs in memory and matches them with incoming transactions based on transaction hashes, as the process is asynchronous."}),"\n",(0,i.jsx)(s.mermaid,{value:'graph TD\n A[User Wallet] --\x3e|First L2 Action via Whitelisted App| B(Karma Issued)\n A --\x3e|Bridges into SN| B\n B --\x3e|Soulbound Token| C{Tier Assignment}\n\n subgraph "Tier Limits"\n T1[Entry]\n T2[Newbie]\n T3[Basic]\n T4[Active]\n T5[Regular]\n T6[Power User]\n T7[Pro User]\n T8[High-Throughput]\n T9[S-Tier]\n T10[Legendary]\n end\n\n C --\x3e T1\n C --\x3e T2\n C --\x3e T3\n C --\x3e T4\n C --\x3e T5\n C --\x3e T6\n C --\x3e T7\n C --\x3e T8\n C --\x3e T9\n C --\x3e T10\n\n %% RLN Flow\n A --\x3e|Submits Gasless Tx| J[RPC Node]\n J --\x3e|Forwards Tx Data| K[Prover]\n subgraph "Prover Services"\n K --\x3e K1[Registrar Service]\n K --\x3e K2[RLN Prover Service]\n K --\x3e K3[Karma API Service]\n K1 --\x3e|Listens for Karma Events| L[Karma Contract]\n K1 --\x3e|Onboards User| M[RLN Membership Contract]\n K2 --\x3e|Generates RLN Proof| N[gRPC Stream]\n K3 --\x3e|Tracks Tx and Karma Tiers| O[Storage]\n end\n J --\x3e|Sends Tx| P[Sequencer]\n N --\x3e|Streams RLN Proof| P\n\n %% Sequencer Section\n subgraph "Sequencer Operations"\n P --\x3e Q[RLN Verifier Plugin]\n Q --\x3e|Subscribes to gRPC Stream| N\n Q --\x3e|Stores Proofs In-Memory| R{Match Tx Hash}\n R --\x3e|Validates RLN Proof| S{Quota Check}\n S --\x3e|Within Limit| T[Add to Mempool]\n S --\x3e|Exceeds Limit| U[Deny List]\n U --\x3e|Flags Address| V[Premium Gas Required]\n Q --\x3e|Spam Detected| W[Slash RLN Stake]\n end\n\n %% Gas Estimation Flow\n A --\x3e|Requests Gas Estimate| X[Modified linea_estimateGas RPC]\n X --\x3e|Queries| U\n U --\x3e|Address Listed| Y[Apply Premium Gas Multiplier]\n Y --\x3e|Pay Premium Gas| Z[Remove from Deny List]\n Z --\x3e|Earn Karma| B\n U --\x3e|Address Not Listed| AA[Standard Gas Estimate]\n\n %% Styling\n classDef wallet fill:#FFD700,stroke:#DAA520,color:#333\n classDef karma fill:#98FB98,stroke:#2E8B57,color:#333\n classDef tier fill:#87CEFA,stroke:#4682B4,color:#333\n classDef tierNode fill:#ADD8E6,stroke:#4682B4,color:#333\n classDef rln fill:#FFB6C1,stroke:#DB7093,color:#333\n classDef sequencer fill:#DDA0DD,stroke:#BA55D3,color:#333\n classDef gas fill:#FFA07A,stroke:#FF4500,color:#333\n\n class A wallet\n class B,L karma\n class C tier\n class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode\n class J,K,K1,K2,K3,M,N,O rln\n class P,Q,R,S,T,U,V,W sequencer\n class X,Y,Z,AA gas'}),"\n",(0,i.jsx)(s.h2,{id:"system-components",children:"System Components"}),"\n",(0,i.jsx)(s.h3,{id:"prover",children:"Prover"}),"\n",(0,i.jsx)(s.p,{children:"The Prover is a system comprising three services:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Registrar Service"}),": Listens for Karma allocation events from the Karma Contract. When a new address receives Karma, it onboards the user to the RLN Membership Contract by generating RLN credentials and registering them."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"RLN Prover Service"}),": Generates RLN proofs for transactions using the Zerokit library. Proofs are streamed directly to the RLN Verifier in the Sequencer via a gRPC stream."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Karma API Service"}),": Tracks transactions made by users within an epoch and maintains their Karma tier status. It stores transaction data in an internal database for efficient querying and tier management."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"These services ensure secure credential management, proof generation, and transaction tracking, with gRPC enabling low-latency communication with the Sequencer."}),"\n",(0,i.jsx)(s.h3,{id:"rln-verifier",children:"RLN Verifier"}),"\n",(0,i.jsx)(s.p,{children:"The RLN Verifier is a besu plugin inside the sequencer, leveraging RLN's Zerokit Rust library via Java Native Interface.\nThe Verifier:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Subscribes to the gRPC stream from the RLN Prover Service to receive RLN proofs as they are generated."}),"\n",(0,i.jsx)(s.li,{children:"Stores proofs in memory and matches them with incoming transactions based on transaction hashes, accounting for the asynchronous arrival of transactions (via RPC Node) and proofs (via gRPC)."}),"\n",(0,i.jsx)(s.li,{children:"Verifies proof authenticity, nullifier uniqueness, and user transaction quotas."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Transactions failing verification are rejected, and users may be temporarily added to the Deny List."}),"\n",(0,i.jsx)(s.h3,{id:"deny-list",children:"Deny List"}),"\n",(0,i.jsx)(s.p,{children:"The Deny List temporarily restricts users exceeding quotas or engaging in spam:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Entries expire after a set duration (e.g., hours or days) based on the throughput tiers"}),"\n",(0,i.jsx)(s.li,{children:"Users can bypass restrictions by paying premium gas fees"}),"\n",(0,i.jsx)(s.li,{children:"Paying premium fees removes users from the list and earns additional Karma"}),"\n"]}),"\n",(0,i.jsxs)(s.h2,{id:"linea_estimategas-rpc-modification",children:[(0,i.jsx)(s.code,{children:"linea_estimateGas"})," RPC Modification"]}),"\n",(0,i.jsxs)(s.p,{children:["Status Network extends the base Linea ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," with Karma-aware behavior so the returned ",(0,i.jsx)(s.strong,{children:"fee fields"})," can depend on the sender address ",(0,i.jsx)(s.code,{children:"from"}),"'s Karma balance.\nThe ",(0,i.jsx)(s.code,{children:"gasLimit"})," calculation is unchanged from the base Linea implementation (which itself uses the standard ",(0,i.jsx)(s.code,{children:"eth_estimateGas"})," logic internally)."]}),"\n",(0,i.jsxs)(s.p,{children:["Concretely, Status Network's ",(0,i.jsx)(s.code,{children:"linea_estimateGas"}),":"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Applies deny-list premium"}),": if the sender is on the deny list, the node computes the normal fee estimate and then applies a premium multiplier to the ",(0,i.jsx)(s.strong,{children:"fee fields"}),"."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Returns gasless estimates for eligible users"}),": if the sender has available Karma quota, the method returns zero ",(0,i.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,i.jsx)(s.code,{children:"priorityFeePerGas"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["The above logic lives in our modified ",(0,i.jsx)(s.code,{children:"LineaEstimateGas"})," implementation open-sourced around ",(0,i.jsx)(s.a,{href:"https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218",children:"this section in the Status Network monorepo"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["For Karma-aware fee estimation behavior and ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," specifics, see ",(0,i.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"}),"."]})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>a,x:()=>o});var r=n(6540);const i={},t=r.createContext(i);function a(e){const s=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f6ed3658.ab8fa171.js b/assets/js/f6ed3658.ab8fa171.js deleted file mode 100644 index 0ae9c39..0000000 --- a/assets/js/f6ed3658.ab8fa171.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2316],{6632:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"overview/general-info/gasless-transactions","title":"Gasless Transactions on Status Network","description":"Learn how Status Network implements gasless transactions using RLN (Rate Limiting Nullifier), and Karma tiers for spam prevention and fair usage.","source":"@site/docs/overview/general-info/gasless-transactions.md","sourceDirName":"overview/general-info","slug":"/overview/general-info/gasless-transactions","permalink":"/overview/general-info/gasless-transactions","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/general-info/gasless-transactions.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"frontMatter":{"sidebar_label":"\u26fd Gasless Transactions","title":"Gasless Transactions on Status Network","description":"Learn how Status Network implements gasless transactions using RLN (Rate Limiting Nullifier), and Karma tiers for spam prevention and fair usage.","keywords":["Status Network","Gasless Transactions","Linea","RLN","Rate Limiting Nullifier","Karma","Zero-Knowledge Proofs","ZKP","Soulbound Tokens","Blockchain","Layer 2","L2","Spam Prevention"]},"sidebar":"homeSidebar","previous":{"title":"\ud83c\udf10 Network Details","permalink":"/overview/general-info/network-details"},"next":{"title":"\u2795 Add Status Network","permalink":"/overview/general-info/add-status-network"}}');var i=n(4848),t=n(8453);const a={sidebar_label:"\u26fd Gasless Transactions",title:"Gasless Transactions on Status Network",description:"Learn how Status Network implements gasless transactions using RLN (Rate Limiting Nullifier), and Karma tiers for spam prevention and fair usage.",keywords:["Status Network","Gasless Transactions","Linea","RLN","Rate Limiting Nullifier","Karma","Zero-Knowledge Proofs","ZKP","Soulbound Tokens","Blockchain","Layer 2","L2","Spam Prevention"]},o=void 0,l={},c=[{value:"RLN",id:"rln",level:2},{value:"RLN Membership Management",id:"rln-membership-management",level:3},{value:"System Components",id:"system-components",level:2},{value:"Prover",id:"prover",level:3},{value:"RLN Verifier",id:"rln-verifier",level:3},{value:"Deny List",id:"deny-list",level:3},{value:"linea_estimateGas RPC Modification",id:"linea_estimategas-rpc-modification",level:2}];function d(e){const s={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",mermaid:"mermaid",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(s.p,{children:["Status Network aims to introduce gasless transactions at scale. The key component of this gasless approach is Vac's ",(0,i.jsx)(s.a,{href:"https://vac.dev/rln",children:"Rate Limiting Nullifier"}),", which permits transaction rate limitation without the need for traditional gas fees. The document describes the architecture and integration elements needed to safely enable gasless transactions."]}),"\n",(0,i.jsxs)(s.p,{children:["The implementation code for gasless transactions is available in the ",(0,i.jsx)(s.a,{href:"https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components",children:"Status Network monorepo"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["For more information on operational level implementation of our gaslessness, refer to ",(0,i.jsx)(s.a,{href:"/build-for-karma/guides",children:"Karma integration guide"})]}),"\n",(0,i.jsx)(s.h2,{id:"rln",children:"RLN"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.a,{href:"https://vac.dev/rln",children:"RLN"})," is a zero-knowledge system designed to prevent spam without compromising user privacy unless a violation occurs. It replaces traditional gas fees with cryptographic rate limits enforced via ZKPs and Shamir's Secret Sharing."]}),"\n",(0,i.jsx)(s.p,{children:"RLN characteristics:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Zero-Knowledge Proofs:"})," Users generate ZKPs verifying their RLN group membership without revealing their identity. The group membership indicates the maximum gasless transaction throughput for each tier."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Shamir's Secret Sharing and Nullifiers:"})," Users hold a secret key used to generate unique nullifiers for transactions. If a user exceeds their transaction limit within an epoch (e.g., block or timestamp), their secret key becomes recoverable, exposing them."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Spam Detection:"})," Users exceeding limits effectively reveal their secret, leading to penalties like Deny List inclusion, higher future gas costs, or potential token slashing."]}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"rln-membership-management",children:"RLN Membership Management"}),"\n",(0,i.jsx)(s.p,{children:"RLN uses Sparse Merkle Trees to efficiently handle large-scale membership proofs. A benchmarking study determined that a tree height of 20, supporting 1 million accounts, provides optimal performance for proof generation and verification. For scalability beyond 1 million accounts, multiple SMTs can be used with a registry to direct users to the appropriate tree."}),"\n",(0,i.jsx)(s.p,{children:"The Prover includes a Registrar Service that listens for events from the Karma Contract, where Karma is allocated to new addresses. Upon detecting such an event, the Registrar Service onboards the user to the RLN Membership Contract by generating and registering their RLN credentials (identitySecretHash and identityCommitment). The RLN Prover Service generates proofs for transactions, which are streamed via gRPC to the RLN Verifier in the Sequencer. The Verifier stores these proofs in memory and matches them with incoming transactions based on transaction hashes, as the process is asynchronous."}),"\n",(0,i.jsx)(s.mermaid,{value:'graph TD\n A[User Wallet] --\x3e|First L2 Action via Whitelisted App| B(Karma Issued)\n A --\x3e|Bridges into SN| B\n B --\x3e|Soulbound Token| C{Tier Assignment}\n\n subgraph "Tier Limits"\n T1[Entry]\n T2[Newbie]\n T3[Basic]\n T4[Active]\n T5[Regular]\n T6[Power User]\n T7[Pro User]\n T8[High-Throughput]\n T9[S-Tier]\n T10[Legendary]\n end\n\n C --\x3e T1\n C --\x3e T2\n C --\x3e T3\n C --\x3e T4\n C --\x3e T5\n C --\x3e T6\n C --\x3e T7\n C --\x3e T8\n C --\x3e T9\n C --\x3e T10\n\n %% RLN Flow\n A --\x3e|Submits Gasless Tx| J[RPC Node]\n J --\x3e|Forwards Tx Data| K[Prover]\n subgraph "Prover Services"\n K --\x3e K1[Registrar Service]\n K --\x3e K2[RLN Prover Service]\n K --\x3e K3[Karma API Service]\n K1 --\x3e|Listens for Karma Events| L[Karma Contract]\n K1 --\x3e|Onboards User| M[RLN Membership Contract]\n K2 --\x3e|Generates RLN Proof| N[gRPC Stream]\n K3 --\x3e|Tracks Tx and Karma Tiers| O[Storage]\n end\n J --\x3e|Sends Tx| P[Sequencer]\n N --\x3e|Streams RLN Proof| P\n\n %% Sequencer Section\n subgraph "Sequencer Operations"\n P --\x3e Q[RLN Verifier Plugin]\n Q --\x3e|Subscribes to gRPC Stream| N\n Q --\x3e|Stores Proofs In-Memory| R{Match Tx Hash}\n R --\x3e|Validates RLN Proof| S{Quota Check}\n S --\x3e|Within Limit| T[Add to Mempool]\n S --\x3e|Exceeds Limit| U[Deny List]\n U --\x3e|Flags Address| V[Premium Gas Required]\n Q --\x3e|Spam Detected| W[Slash RLN Stake]\n end\n\n %% Gas Estimation Flow\n A --\x3e|Requests Gas Estimate| X[Modified linea_estimateGas RPC]\n X --\x3e|Queries| U\n U --\x3e|Address Listed| Y[Apply Premium Gas Multiplier]\n Y --\x3e|Pay Premium Gas| Z[Remove from Deny List]\n Z --\x3e|Earn Karma| B\n U --\x3e|Address Not Listed| AA[Standard Gas Estimate]\n\n %% Styling\n classDef wallet fill:#FFD700,stroke:#DAA520,color:#333\n classDef karma fill:#98FB98,stroke:#2E8B57,color:#333\n classDef tier fill:#87CEFA,stroke:#4682B4,color:#333\n classDef tierNode fill:#ADD8E6,stroke:#4682B4,color:#333\n classDef rln fill:#FFB6C1,stroke:#DB7093,color:#333\n classDef sequencer fill:#DDA0DD,stroke:#BA55D3,color:#333\n classDef gas fill:#FFA07A,stroke:#FF4500,color:#333\n\n class A wallet\n class B,L karma\n class C tier\n class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode\n class J,K,K1,K2,K3,M,N,O rln\n class P,Q,R,S,T,U,V,W sequencer\n class X,Y,Z,AA gas'}),"\n",(0,i.jsx)(s.h2,{id:"system-components",children:"System Components"}),"\n",(0,i.jsx)(s.h3,{id:"prover",children:"Prover"}),"\n",(0,i.jsx)(s.p,{children:"The Prover is a system comprising three services:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Registrar Service"}),": Listens for Karma allocation events from the Karma Contract. When a new address receives Karma, it onboards the user to the RLN Membership Contract by generating RLN credentials and registering them."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"RLN Prover Service"}),": Generates RLN proofs for transactions using the Zerokit library. Proofs are streamed directly to the RLN Verifier in the Sequencer via a gRPC stream."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Karma API Service"}),": Tracks transactions made by users within an epoch and maintains their Karma tier status. It stores transaction data in an internal database for efficient querying and tier management."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"These services ensure secure credential management, proof generation, and transaction tracking, with gRPC enabling low-latency communication with the Sequencer."}),"\n",(0,i.jsx)(s.h3,{id:"rln-verifier",children:"RLN Verifier"}),"\n",(0,i.jsx)(s.p,{children:"The RLN Verifier is a besu plugin inside the sequencer, leveraging RLN's Zerokit Rust library via Java Native Interface.\nThe Verifier:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Subscribes to the gRPC stream from the RLN Prover Service to receive RLN proofs as they are generated."}),"\n",(0,i.jsx)(s.li,{children:"Stores proofs in memory and matches them with incoming transactions based on transaction hashes, accounting for the asynchronous arrival of transactions (via RPC Node) and proofs (via gRPC)."}),"\n",(0,i.jsx)(s.li,{children:"Verifies proof authenticity, nullifier uniqueness, and user transaction quotas."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Transactions failing verification are rejected, and users may be temporarily added to the Deny List."}),"\n",(0,i.jsx)(s.h3,{id:"deny-list",children:"Deny List"}),"\n",(0,i.jsx)(s.p,{children:"The Deny List temporarily restricts users exceeding quotas or engaging in spam:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Entries expire after a set duration (e.g., hours or days) based on the throughput tiers"}),"\n",(0,i.jsx)(s.li,{children:"Users can bypass restrictions by paying premium gas fees"}),"\n",(0,i.jsx)(s.li,{children:"Paying premium fees removes users from the list and earns additional Karma"}),"\n"]}),"\n",(0,i.jsxs)(s.h2,{id:"linea_estimategas-rpc-modification",children:[(0,i.jsx)(s.code,{children:"linea_estimateGas"})," RPC Modification"]}),"\n",(0,i.jsxs)(s.p,{children:["Status Network extends the base Linea ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," with Karma-aware behavior so the returned ",(0,i.jsx)(s.strong,{children:"fee fields"})," can depend on the sender address ",(0,i.jsx)(s.code,{children:"from"}),"'s Karma balance.\nThe ",(0,i.jsx)(s.code,{children:"gasLimit"})," calculation is unchanged from the base Linea implementation (which itself uses the standard ",(0,i.jsx)(s.code,{children:"eth_estimateGas"})," logic internally)."]}),"\n",(0,i.jsxs)(s.p,{children:["Concretely, Status Network's ",(0,i.jsx)(s.code,{children:"linea_estimateGas"}),":"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Applies deny-list premium"}),": if the sender is on the deny list, the node computes the normal fee estimate and then applies a premium multiplier to the ",(0,i.jsx)(s.strong,{children:"fee fields"}),"."]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Returns gasless estimates for eligible users"}),": if the sender has available Karma quota, the method returns zero ",(0,i.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,i.jsx)(s.code,{children:"priorityFeePerGas"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["The above logic lives in our modified ",(0,i.jsx)(s.code,{children:"LineaEstimateGas"})," implementation open-sourced around ",(0,i.jsx)(s.a,{href:"https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218",children:"this section in the Status Network monorepo"}),"."]}),"\n",(0,i.jsxs)(s.p,{children:["For Karma-aware fee estimation behavior and ",(0,i.jsx)(s.code,{children:"linea_estimateGas"})," specifics, see ",(0,i.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"}),"."]})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>a,x:()=>o});var r=n(6540);const i={},t=r.createContext(i);function a(e){const s=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fb87d503.04e248af.js b/assets/js/fb87d503.04e248af.js new file mode 100644 index 0000000..c741192 --- /dev/null +++ b/assets/js/fb87d503.04e248af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[6910],{8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var s=n(6540);const r={},i=s.createContext(r);function a(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:t},e.children)}},9085:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"overview/index","title":"Status Network Overview: The Gasless Layer 2 Solution","description":"Explore Status Network, a gasless Ethereum L2 using RLN for spam protection. Earn Karma reputation to unlock free transactions and native yield governance.","source":"@site/docs/overview/index.md","sourceDirName":"overview","slug":"/overview","permalink":"/overview","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/index.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":1,"frontMatter":{"id":"index","title":"Status Network Overview: The Gasless Layer 2 Solution","description":"Explore Status Network, a gasless Ethereum L2 using RLN for spam protection. Earn Karma reputation to unlock free transactions and native yield governance.","keywords":["Status Network","Layer 2","gasless blockchain","ethereum scaling","L2","validium","web3 development","dapp development","blockchain development"],"slug":"/overview","sidebar_position":1},"sidebar":"homeSidebar","next":{"title":"\u26a1 Quick Start","permalink":"/overview/introduction/quick-start"}}');var r=n(4848),i=n(8453);const a={id:"index",title:"Status Network Overview: The Gasless Layer 2 Solution",description:"Explore Status Network, a gasless Ethereum L2 using RLN for spam protection. Earn Karma reputation to unlock free transactions and native yield governance.",keywords:["Status Network","Layer 2","gasless blockchain","ethereum scaling","L2","validium","web3 development","dapp development","blockchain development"],slug:"/overview",sidebar_position:1},o="Status Network: The Gasless Layer 2",l={},d=[{value:"Key Features",id:"key-features",level:2},{value:"Getting Started",id:"getting-started",level:2},{value:"Support & Resources",id:"support--resources",level:2}];function c(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"status-network-the-gasless-layer-2",children:"Status Network: The Gasless Layer 2"})}),"\n",(0,r.jsx)(t.p,{children:"Status Network is the first natively gasless Ethereum L2, optimized for social apps and games, featuring sustainable public funding for developers through native yield and DEX fees. Built on the Linea zkEVM stack, it provides high-performance, gas-free transactions while ensuring economic sustainability through a novel funding model."}),"\n",(0,r.jsx)(t.h2,{id:"key-features",children:"Key Features"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Gasless Transactions"})}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Developers can create seamless experiences and users can transact freely without worrying about gas fees."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Native Yield and Fees"})}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"To sustain the L2 operation and support developers, Status Network is funded through a combination of native yield and fees coming from its native apps, starting with a DEX."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Sustainable Public Funding"})}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"The apps funding pool, governed by token holders, continuously allocates capital from native yield and fees to onchain builders."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"High-Performance Execution"})}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Status Network is built on Linea's zkEVM rollup stack, ensuring fast and secure transactions."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Spam Protection via RLN"})}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Rate-Limiting Nullifiers (RLN) prevent spam and DDoS attacks while maintaining a fair allocation of free transactions per user and apps."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Deep Integration with IFT"})}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Status Network is natively integrated with Status Wallet, Keycard, Waku and Codex, all part of ",(0,r.jsx)(t.a,{href:"https://free.technology",children:"IFT"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsx)(t.p,{children:"Wants to skip the explanation part and go straight to building? Here's how to get started:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network to Your Wallet"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Get Testnet ETH"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridge Assets"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/build-for-karma/deploying-contracts/using-remix",children:"Deploy Your First Contract"})}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"support--resources",children:"Support & Resources"}),"\n",(0,r.jsx)(t.p,{children:"Connect with our community and access the resources you need:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Join our ",(0,r.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})]}),"\n",(0,r.jsxs)(t.li,{children:["View ",(0,r.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n",(0,r.jsxs)(t.li,{children:["Browse ",(0,r.jsx)(t.a,{href:"/overview/general-info/contract-addresses/testnet-contracts",children:"Contract Addresses"})]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Ready to build something amazing? Start your journey on the free network today!"})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/fb87d503.28e1ae12.js b/assets/js/fb87d503.28e1ae12.js deleted file mode 100644 index 033c057..0000000 --- a/assets/js/fb87d503.28e1ae12.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[6910],{8453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>o});var n=s(6540);const i={},r=n.createContext(i);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:t},e.children)}},9085:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"overview/index","title":"Status Network \xb7 Gasless L2","description":"Status Network is a gasless Layer 2 blockchain network enabling seamless, fee-free decentralized applications. Start building with easy wallet setup, faucets, and deployment tools.","source":"@site/docs/overview/index.md","sourceDirName":"overview","slug":"/overview","permalink":"/overview","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/overview/index.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"sidebarPosition":1,"frontMatter":{"id":"index","title":"Status Network \xb7 Gasless L2","description":"Status Network is a gasless Layer 2 blockchain network enabling seamless, fee-free decentralized applications. Start building with easy wallet setup, faucets, and deployment tools.","keywords":["Status Network","Layer 2","gasless blockchain","ethereum scaling","L2","validium","web3 development","dapp development","blockchain development"],"slug":"/overview","sidebar_position":1},"sidebar":"homeSidebar","next":{"title":"\u26a1 Quick Start","permalink":"/overview/introduction/quick-start"}}');var i=s(4848),r=s(8453);const a={id:"index",title:"Status Network \xb7 Gasless L2",description:"Status Network is a gasless Layer 2 blockchain network enabling seamless, fee-free decentralized applications. Start building with easy wallet setup, faucets, and deployment tools.",keywords:["Status Network","Layer 2","gasless blockchain","ethereum scaling","L2","validium","web3 development","dapp development","blockchain development"],slug:"/overview",sidebar_position:1},o="Status Network: The Gasless Layer 2",l={},d=[{value:"Key Features",id:"key-features",level:2},{value:"Getting Started",id:"getting-started",level:2},{value:"Support & Resources",id:"support--resources",level:2}];function c(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"status-network-the-gasless-layer-2",children:"Status Network: The Gasless Layer 2"})}),"\n",(0,i.jsx)(t.p,{children:"Status Network is the first natively gasless Ethereum L2, optimized for social apps and games, featuring sustainable public funding for developers through native yield and DEX fees. Built on the Linea zkEVM stack, it provides high-performance, gas-free transactions while ensuring economic sustainability through a novel funding model."}),"\n",(0,i.jsx)(t.h2,{id:"key-features",children:"Key Features"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.strong,{children:"Gasless Transactions"})}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Developers can create seamless experiences and users can transact freely without worrying about gas fees."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.strong,{children:"Native Yield and Fees"})}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"To sustain the L2 operation and support developers, Status Network is funded through a combination of native yield and fees coming from its native apps, starting with a DEX."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.strong,{children:"Sustainable Public Funding"})}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"The apps funding pool, governed by token holders, continuously allocates capital from native yield and fees to onchain builders."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.strong,{children:"High-Performance Execution"})}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Status Network is built on Linea's zkEVM rollup stack, ensuring fast and secure transactions."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.strong,{children:"Spam Protection via RLN"})}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Rate-Limiting Nullifiers (RLN) prevent spam and DDoS attacks while maintaining a fair allocation of free transactions per user and apps."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.strong,{children:"Deep Integration with IFT"})}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["Status Network is natively integrated with Status Wallet, Keycard, Waku and Codex, all part of ",(0,i.jsx)(t.a,{href:"https://free.technology",children:"IFT"}),"."]}),"\n",(0,i.jsx)(t.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,i.jsx)(t.p,{children:"Wants to skip the explanation part and go straight to building? Here's how to get started:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/overview/general-info/add-status-network",children:"Add Status Network to Your Wallet"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/tools/core-infrastructure/testnet-faucets",children:"Get Testnet ETH"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/overview/general-info/bridge/bridging-testnet",children:"Bridge Assets"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/build-for-karma/deploying-contracts/using-remix",children:"Deploy Your First Contract"})}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"support--resources",children:"Support & Resources"}),"\n",(0,i.jsx)(t.p,{children:"Connect with our community and access the resources you need:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Join our ",(0,i.jsx)(t.a,{href:"https://t.me/statusl2",children:"Telegram Builder's Community"})]}),"\n",(0,i.jsxs)(t.li,{children:["View ",(0,i.jsx)(t.a,{href:"/overview/general-info/network-details",children:"Network Details"})]}),"\n",(0,i.jsxs)(t.li,{children:["Browse ",(0,i.jsx)(t.a,{href:"/overview/general-info/contract-addresses/testnet-contracts",children:"Contract Addresses"})]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Ready to build something amazing? Start your journey on the free network today!"})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/fbc58520.1e047f70.js b/assets/js/fbc58520.1e047f70.js new file mode 100644 index 0000000..43caac4 --- /dev/null +++ b/assets/js/fbc58520.1e047f70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2288],{1470:(e,s,a)=>{a.d(s,{A:()=>y});var n=a(6540),t=a(4164),r=a(7559),i=a(3104),l=a(6347),o=a(205),c=a(7485),d=a(1682),h=a(679);function m(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:s}=e;return!!s&&"object"==typeof s&&"value"in s}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:s,children:a}=e;return(0,n.useMemo)((()=>{const e=s??function(e){return m(e).map((({props:{value:e,label:s,attributes:a,default:n}})=>({value:e,label:s,attributes:a,default:n})))}(a);return function(e){const s=(0,d.XI)(e,((e,s)=>e.value===s.value));if(s.length>0)throw new Error(`Docusaurus error: Duplicate values "${s.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[s,a])}function x({value:e,tabValues:s}){return s.some((s=>s.value===e))}function p({queryString:e=!1,groupId:s}){const a=(0,l.W6)(),t=function({queryString:e=!1,groupId:s}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:e,groupId:s});return[(0,c.aZ)(t),(0,n.useCallback)((e=>{if(!t)return;const s=new URLSearchParams(a.location.search);s.set(t,e),a.replace({...a.location,search:s.toString()})}),[t,a])]}function j(e){const{defaultValue:s,queryString:a=!1,groupId:t}=e,r=u(e),[i,l]=(0,n.useState)((()=>function({defaultValue:e,tabValues:s}){if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!x({value:e,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:s,tabValues:r}))),[c,d]=p({queryString:a,groupId:t}),[m,j]=function({groupId:e}){const s=function(e){return e?`docusaurus.tab.${e}`:null}(e),[a,t]=(0,h.Dv)(s);return[a,(0,n.useCallback)((e=>{s&&t.set(e)}),[s,t])]}({groupId:t}),g=(()=>{const e=c??m;return x({value:e,tabValues:r})?e:null})();(0,o.A)((()=>{g&&l(g)}),[g]);return{selectedValue:i,selectValue:(0,n.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),j(e)}),[d,j,r]),tabValues:r}}var g=a(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=a(4848);function v({className:e,block:s,selectedValue:a,selectValue:n,tabValues:r}){const l=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.a_)(),c=e=>{const s=e.currentTarget,t=l.indexOf(s),i=r[t].value;i!==a&&(o(s),n(i))},d=e=>{let s=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const a=l.indexOf(e.currentTarget)+1;s=l[a]??l[0];break}case"ArrowLeft":{const a=l.indexOf(e.currentTarget)-1;s=l[a]??l[l.length-1];break}}s?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},e),children:r.map((({value:e,label:s,attributes:n})=>(0,b.jsx)("li",{role:"tab",tabIndex:a===e?0:-1,"aria-selected":a===e,ref:e=>{l.push(e)},onKeyDown:d,onClick:c,...n,className:(0,t.A)("tabs__item",f.tabItem,n?.className,{"tabs__item--active":a===e}),children:s??e},e)))})}function P({lazy:e,children:s,selectedValue:a}){const r=(Array.isArray(s)?s:[s]).filter(Boolean);if(e){const e=r.find((e=>e.props.value===a));return e?(0,n.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:r.map(((e,s)=>(0,n.cloneElement)(e,{key:s,hidden:e.props.value!==a})))})}function _(e){const s=j(e);return(0,b.jsxs)("div",{className:(0,t.A)(r.G.tabs.container,"tabs-container",f.tabList),children:[(0,b.jsx)(v,{...s,...e}),(0,b.jsx)(P,{...s,...e})]})}function y(e){const s=(0,g.A)();return(0,b.jsx)(_,{...e,children:m(e.children)},String(s))}},8453:(e,s,a)=>{a.d(s,{R:()=>i,x:()=>l});var n=a(6540);const t={},r=n.createContext(t);function i(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),n.createElement(r.Provider,{value:s},e.children)}},8742:(e,s,a)=>{a.r(s),a.d(s,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"build-for-karma/guides/gasless-integration","title":"Gasless Integration Guide: Building Zero-Fee Web3 UX","description":"Integrate gasless UX on Status Network. Use the linea_estimateGas method and Karma-aware fee estimation to build seamless, fee-free dApps for all users.","source":"@site/docs/build-for-karma/guides/gasless-integration.md","sourceDirName":"build-for-karma/guides","slug":"/build-for-karma/guides/gasless-integration","permalink":"/build-for-karma/guides/gasless-integration","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/guides/gasless-integration.md","tags":[],"version":"current","lastUpdatedAt":1774536246000,"sidebarPosition":5,"frontMatter":{"title":"Gasless Integration Guide: Building Zero-Fee Web3 UX","description":"Integrate gasless UX on Status Network. Use the linea_estimateGas method and Karma-aware fee estimation to build seamless, fee-free dApps for all users.","keywords":["gasless","linea_estimateGas","Status Network","deny list","builder","zero gas","UX"],"slug":"/build-for-karma/guides/gasless-integration","sidebar_position":5},"sidebar":"buildForKarmaSidebar","previous":{"title":"Using Karma: Integration Guides for Reputation Logic","permalink":"/build-for-karma/guides"},"next":{"title":"\ud83d\udd30 Reputation Integration","permalink":"/build-for-karma/guides/reputation-integration"}}');var t=a(4848),r=a(8453),i=a(1470),l=a(9365);const o={title:"Gasless Integration Guide: Building Zero-Fee Web3 UX",description:"Integrate gasless UX on Status Network. Use the linea_estimateGas method and Karma-aware fee estimation to build seamless, fee-free dApps for all users.",keywords:["gasless","linea_estimateGas","Status Network","deny list","builder","zero gas","UX"],slug:"/build-for-karma/guides/gasless-integration",sidebar_position:5},c="Gasless Integration Guide",d={},h=[{value:"Karma-aware fee estimation",id:"karma-aware-fee-estimation",level:2},{value:"linea_estimateGas request/response shape",id:"linea_estimategas-requestresponse-shape",level:2},{value:"Request",id:"request",level:3},{value:"Response",id:"response",level:3},{value:"Migration guide: from multiple eth_ calls to linea_estimateGas",id:"migration-guide-from-multiple-eth_-calls-to-linea_estimategas",level:2},{value:"Before: common EIP-1559 estimation flow on EVM chains using eth_ namespaces",id:"before-common-eip-1559-estimation-flow-on-evm-chains-using-eth_-namespaces",level:3},{value:"After: Status Network gas estimation flow using linea_estimateGas",id:"after-status-network-gas-estimation-flow-using-linea_estimategas",level:3},{value:"Handling fee scenarios in UI",id:"handling-fee-scenarios-in-ui",level:2},{value:"1) Gasless",id:"1-gasless",level:3},{value:"2) Premium fees",id:"2-premium-fees",level:3},{value:"Common pitfalls",id:"common-pitfalls",level:2},{value:"Next steps",id:"next-steps",level:2}];function m(e){const s={a:"a",admonition:"admonition",annotation:"annotation",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",math:"math",mermaid:"mermaid",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",ol:"ol",p:"p",pre:"pre",semantics:"semantics",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"gasless-integration-guide",children:"Gasless Integration Guide"})}),"\n",(0,t.jsx)(s.p,{children:"Status Network provides gasless transactions at the protocol level. You do not need paymasters or relayers. As a builder, the core task is to estimate and present fees correctly per sender state."}),"\n",(0,t.jsx)(s.admonition,{title:"The key rule",type:"important",children:(0,t.jsxs)(s.p,{children:["Use ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," RPC method as the source of truth for gas fee when preparing transaction UX."]})}),"\n",(0,t.jsxs)(s.p,{children:["For other JSON-RPC method reference, see ",(0,t.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"}),"."]}),"\n",(0,t.jsx)(s.h2,{id:"karma-aware-fee-estimation",children:"Karma-aware fee estimation"}),"\n",(0,t.jsxs)(s.p,{children:["On Linea, ",(0,t.jsx)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:(0,t.jsx)(s.code,{children:"linea_estimateGas"})})," is already the recommended way to estimate gas.\nIt returns ",(0,t.jsx)(s.code,{children:"gasLimit"}),", ",(0,t.jsx)(s.code,{children:"baseFeePerGas"}),", and ",(0,t.jsx)(s.code,{children:"priorityFeePerGas"})," in a ",(0,t.jsx)(s.strong,{children:"single call"}),", where the fee fields account for compressed transaction size, layer-1 verification costs, and the L1/L2 gas-price ratio - factors that ",(0,t.jsx)(s.code,{children:"eth_"})," namespace methods do not capture."]}),"\n",(0,t.jsxs)(s.p,{children:["Status Network extends ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," further so that the fee fields also incorporate our ",(0,t.jsx)(s.strong,{children:"Karma"})," system; fees may be reduced to zero for eligible users, or increased for deny-listed users."]}),"\n",(0,t.jsx)(s.mermaid,{value:'flowchart TD\n A[User initiates transaction] --\x3e B["Call linea_estimateGas with from parameter"]\n B --\x3e C{Fee outcome}\n C --\x3e|base+priority = 0| D[Show gasless UX]\n C --\x3e|Premium fees| F[Show premium fee UX]\n D --\x3e G[Send transaction]\n F --\x3e G'}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.em,{children:["Figure: Gas estimation flow using ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]})}),"\n",(0,t.jsxs)(s.p,{children:["This is why builders should use ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," when estimating transaction costs or pre-filling EIP-1559 fee fields for users on Status Network."]}),"\n",(0,t.jsxs)(s.admonition,{title:"for more",type:"info",children:[(0,t.jsxs)(s.p,{children:["For a detailed explanation of Karma and its impact on gas fees and transaction privileges, see the ",(0,t.jsx)(s.a,{href:"../../overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," page."]}),(0,t.jsxs)(s.p,{children:["For the technical details of how our gasless system is implemented and enforced, refer to the ",(0,t.jsx)(s.a,{href:"../../overview/general-info/gasless-transactions",children:"Gasless Transactions"})," documentation."]})]}),"\n",(0,t.jsxs)(s.h2,{id:"linea_estimategas-requestresponse-shape",children:[(0,t.jsx)(s.code,{children:"linea_estimateGas"})," request/response shape"]}),"\n",(0,t.jsx)(s.h3,{id:"request",children:"Request"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"linea_estimateGas"})," takes the ",(0,t.jsx)(s.strong,{children:"same transaction call object"})," as ",(0,t.jsx)(s.code,{children:"eth_estimateGas"}),".\nIt returns ",(0,t.jsx)(s.code,{children:"gasLimit"})," (using the same EVM execution logic as ",(0,t.jsx)(s.code,{children:"eth_estimateGas"}),") together with fee fields that reflect both Linea's L2-specific pricing and Status Network's Karma rules - all in a single response."]}),"\n",(0,t.jsx)(s.admonition,{type:"important",children:(0,t.jsxs)(s.p,{children:[(0,t.jsxs)(s.strong,{children:["Always include ",(0,t.jsx)(s.code,{children:"from"}),"."]})," Without it, the node can't apply Karma/quota/deny-list logic."]})}),"\n",(0,t.jsx)(s.h3,{id:"response",children:"Response"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"linea_estimateGas"})," returns an object including:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"gasLimit"}),": hex quantity - estimated gas units for EVM execution (same calculation as ",(0,t.jsx)(s.code,{children:"eth_estimateGas"}),")"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"baseFeePerGas"}),": hex quantity - base fee for the next block, accounting for Karma rules on Status Network"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"priorityFeePerGas"}),": hex quantity - suggested priority fee, accounting for Karma rules on Status Network"]}),"\n"]}),"\n",(0,t.jsxs)(s.p,{children:["These fee fields may differ significantly from the values returned by ",(0,t.jsx)(s.code,{children:"eth_"})," namespace calls such as ",(0,t.jsx)(s.code,{children:"eth_gasPrice"}),", ",(0,t.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"}),", or ",(0,t.jsx)(s.code,{children:"eth_feeHistory"}),", which are not aware of Linea's L2-specific pricing or Status Network's Karma adjustments."]}),"\n",(0,t.jsxs)(i.A,{groupId:"estimate-gas-response-shape",children:[(0,t.jsx)(l.A,{value:"linea",label:"linea_estimateGas (single call)",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "gasLimit": "0x5208",\n "baseFeePerGas": "0x0",\n "priorityFeePerGas": "0x0"\n }\n}\n'})})}),(0,t.jsxs)(l.A,{value:"eth",label:"Standard EVM (multiple calls)",children:[(0,t.jsxs)(s.p,{children:["Standard EVM flows require multiple separate ",(0,t.jsx)(s.code,{children:"eth_"})," calls to gather gas limit and fee data:"]}),(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"eth_estimateGas"})}),(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 1,\n "result": "0x5208"\n}\n'})}),(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"eth_maxPriorityFeePerGas"})}),(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 2,\n "result": "0x59682f00"\n}\n'})}),(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"eth_getBlockByNumber"})}),(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 3,\n "result": {\n "number": ...,\n "baseFeePerGas": "0x3b9aca00",\n ...\n }\n}\n'})})]})]}),"\n",(0,t.jsxs)(s.h2,{id:"migration-guide-from-multiple-eth_-calls-to-linea_estimategas",children:["Migration guide: from multiple ",(0,t.jsx)(s.code,{children:"eth_"})," calls to ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]}),"\n",(0,t.jsxs)(s.p,{children:['This section shows how to migrate from the common "EIP-1559 via multiple ',(0,t.jsx)(s.code,{children:"eth_"}),' calls" flow to a single ',(0,t.jsx)(s.code,{children:"linea_estimateGas"})," call, which provides more accurate L2-specific fee data and Karma-aware pricing on Status Network."]}),"\n",(0,t.jsxs)(s.h3,{id:"before-common-eip-1559-estimation-flow-on-evm-chains-using-eth_-namespaces",children:["Before: common EIP-1559 estimation flow on EVM chains using ",(0,t.jsx)(s.code,{children:"eth_"})," namespaces"]}),"\n",(0,t.jsx)(s.p,{children:"On many EVM chains, a typical EIP-1559 estimation flow looks like:"}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Estimate gas limit"})," via ",(0,t.jsx)(s.code,{children:"eth_estimateGas"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsxs)(s.strong,{children:["Fetch ",(0,t.jsx)(s.code,{children:"maxPriorityFeePerGas"})]})," via ",(0,t.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"})," and/or ",(0,t.jsx)(s.code,{children:"eth_feeHistory"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsxs)(s.strong,{children:["Fetch ",(0,t.jsx)(s.code,{children:"baseFeePerGas"})]})," via ",(0,t.jsx)(s.code,{children:"eth_getBlockByNumber"})]}),"\n",(0,t.jsxs)(s.li,{children:["Build an EIP-1559 transaction using:","\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"gas"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"maxPriorityFeePerGas"})}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"maxFeePerGas"}),", often ",(0,t.jsxs)(s.span,{className:"katex",children:[(0,t.jsx)(s.span,{className:"katex-mathml",children:(0,t.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,t.jsxs)(s.semantics,{children:[(0,t.jsxs)(s.mrow,{children:[(0,t.jsx)(s.mn,{children:"2"}),(0,t.jsx)(s.mo,{children:"\u22c5"}),(0,t.jsxs)(s.mrow,{children:[(0,t.jsx)(s.mi,{mathvariant:"normal",children:"b"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"s"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"F"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"P"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"G"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"s"})]}),(0,t.jsx)(s.mo,{children:"+"}),(0,t.jsxs)(s.mrow,{children:[(0,t.jsx)(s.mi,{mathvariant:"normal",children:"m"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"x"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"P"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"i"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"o"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"i"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"t"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"y"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"F"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"P"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"G"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"s"})]})]}),(0,t.jsx)(s.annotation,{encoding:"application/x-tex",children:"2 \\cdot \\mathrm{baseFeePerGas} + \\mathrm{maxPriorityFeePerGas}"})]})})}),(0,t.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,t.jsxs)(s.span,{className:"base",children:[(0,t.jsx)(s.span,{className:"strut",style:{height:"0.6444em"}}),(0,t.jsx)(s.span,{className:"mord",children:"2"}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,t.jsx)(s.span,{className:"mbin",children:"\u22c5"}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,t.jsxs)(s.span,{className:"base",children:[(0,t.jsx)(s.span,{className:"strut",style:{height:"0.7778em",verticalAlign:"-0.0833em"}}),(0,t.jsx)(s.span,{className:"mord",children:(0,t.jsx)(s.span,{className:"mord mathrm",children:"baseFeePerGas"})}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,t.jsx)(s.span,{className:"mbin",children:"+"}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,t.jsxs)(s.span,{className:"base",children:[(0,t.jsx)(s.span,{className:"strut",style:{height:"0.8778em",verticalAlign:"-0.1944em"}}),(0,t.jsx)(s.span,{className:"mord",children:(0,t.jsx)(s.span,{className:"mord mathrm",children:"maxPriorityFeePerGas"})})]})]})]})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(i.A,{groupId:"eip1559-estimation-before",children:[(0,t.jsx)(l.A,{value:"curl",label:"curl",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-bash",children:'# 1) Gas limit (EVM execution)\ncurl -X POST -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc":"2.0",\n "id":1,\n "method":"eth_estimateGas",\n "params":[{\n "from":"0xYOUR_SENDER",\n "to":"0xCONTRACT_OR_RECIPIENT",\n "data":"0xYOUR_CALLDATA",\n "value":"0x0"\n }]\n }\' \\\n https://YOUR_RPC_URL\n\n# 2) Fetch suggested tip amount\ncurl -X POST -H "Content-Type: application/json" \\\n --data \'{"jsonrpc":"2.0","id":2,"method":"eth_maxPriorityFeePerGas","params":[]}\' \\\n https://YOUR_RPC_URL\n\n# 3) Fetch base fee\ncurl -X POST -H "Content-Type: application/json" \\\n --data \'{"jsonrpc":"2.0","id":3,"method":"eth_getBlockByNumber","params":["pending",false]}\' \\\n https://YOUR_RPC_URL\n'})})}),(0,t.jsx)(l.A,{value:"ethers",label:"ethers.js",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.JsonRpcProvider('https://YOUR_RPC_URL');\n\nconst call = {\n from: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: '0x0',\n};\n\nconst gas = await provider.estimateGas(call);\nconst maxPriorityFeePerGas = await provider.send('eth_maxPriorityFeePerGas', []);\nconst pendingBlock = await provider.getBlock('pending');\n\nconst baseFeePerGas = pendingBlock?.baseFeePerGas ?? 0n;\nconst maxFeePerGas = 2n * baseFeePerGas + BigInt(maxPriorityFeePerGas);\n\nconsole.log({\n gas: `0x${gas.toString(16)}`,\n maxPriorityFeePerGas,\n maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,\n});\n"})})}),(0,t.jsx)(l.A,{value:"viem",label:"viem",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { createPublicClient, http } from 'viem';\n\nconst client = createPublicClient({\n transport: http('https://YOUR_RPC_URL'),\n});\n\nconst call = {\n account: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: 0n,\n};\n\nconst gas = await client.estimateGas(call);\nconst maxPriorityFeePerGas = await client.getMaxPriorityFeePerGas();\nconst pendingBlock = await client.getBlock({ blockTag: 'pending' });\n\nconst baseFeePerGas = pendingBlock.baseFeePerGas ?? 0n;\nconst maxFeePerGas = 2n * baseFeePerGas + maxPriorityFeePerGas;\n\nconsole.log({\n gas,\n maxPriorityFeePerGas,\n maxFeePerGas,\n});\n"})})})]}),"\n",(0,t.jsxs)(s.h3,{id:"after-status-network-gas-estimation-flow-using-linea_estimategas",children:["After: Status Network gas estimation flow using ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]}),"\n",(0,t.jsxs)(s.p,{children:["On Status Network, you should source fee suggestions from ",(0,t.jsx)(s.code,{children:"linea_estimateGas"}),", because the correct fee recommendation depends on Karma:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["accounts may be eligible for ",(0,t.jsx)(s.strong,{children:"gasless"})," transactions"]}),"\n",(0,t.jsxs)(s.li,{children:["deny-listed accounts may need to pay a ",(0,t.jsx)(s.strong,{children:"premium gas fee"})]}),"\n"]}),"\n",(0,t.jsxs)(i.A,{groupId:"linea-estimate-gas-request",children:[(0,t.jsx)(l.A,{value:"curl",label:"curl",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-bash",children:'curl -X POST -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc":"2.0",\n "id":1,\n "method":"linea_estimateGas",\n "params":[{\n "from":"0xYOUR_SENDER",\n "to":"0xCONTRACT_OR_RECIPIENT",\n "data":"0xYOUR_CALLDATA",\n "value":"0x0"\n }]\n }\' \\\n https://YOUR_STATUS_NETWORK_RPC_URL\n'})})}),(0,t.jsx)(l.A,{value:"ethers",label:"ethers.js",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.JsonRpcProvider('https://YOUR_STATUS_NETWORK_RPC_URL');\n\nconst call = {\n from: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: '0x0',\n};\n\nconst { gasLimit, baseFeePerGas, priorityFeePerGas } = await provider.send(\n 'linea_estimateGas',\n [call],\n);\n\nconst maxFeePerGas =\n BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);\n\nconsole.log({\n gas: gasLimit,\n maxPriorityFeePerGas: priorityFeePerGas,\n maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,\n});\n"})})}),(0,t.jsx)(l.A,{value:"viem",label:"viem",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { createPublicClient, http } from 'viem';\n\nconst client = createPublicClient({\n transport: http('https://YOUR_STATUS_NETWORK_RPC_URL'),\n});\n\nconst call = {\n from: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: 0n,\n};\n\nconst { gasLimit, baseFeePerGas, priorityFeePerGas } = await client.request({\n method: 'linea_estimateGas',\n params: [call],\n});\n\nconst maxFeePerGas =\n BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);\n\nconsole.log({\n gas: gasLimit,\n maxPriorityFeePerGas: priorityFeePerGas,\n maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,\n});\n"})})})]}),"\n",(0,t.jsx)(s.admonition,{title:"Tooling integration",type:"tip",children:(0,t.jsxs)(s.p,{children:["Many Ethereum libraries call ",(0,t.jsx)(s.code,{children:"eth_estimateGas"})," internally (for example, ",(0,t.jsx)(s.code,{children:"provider.estimateGas(...)"}),"). On Status Network, keep using those libraries for standard ",(0,t.jsx)(s.code,{children:"eth_"})," methods, but ",(0,t.jsxs)(s.strong,{children:["fetch estimates via ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," explicitly for gas limit and fee fields"]})," wherever you build or display transaction parameters for users."]})}),"\n",(0,t.jsx)(s.h2,{id:"handling-fee-scenarios-in-ui",children:"Handling fee scenarios in UI"}),"\n",(0,t.jsx)(s.h3,{id:"1-gasless",children:"1) Gasless"}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,t.jsx)(s.code,{children:"priorityFeePerGas"})," are both zero:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Display a clear free-transaction state."}),"\n",(0,t.jsx)(s.li,{children:"Skip unnecessary fee warnings."}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"2-premium-fees",children:"2) Premium fees"}),"\n",(0,t.jsx)(s.p,{children:"When sender is deny-listed (exceeded quota or RLN policy):"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Show the fee amount and explain that premium gas applies due to quota or spam policy."}),"\n",(0,t.jsx)(s.li,{children:"Make clear the sender can pay the fee or wait for their quota window to refresh."}),"\n",(0,t.jsx)(s.li,{children:"Keep the transaction possible; do not hard-block."}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"common-pitfalls",children:"Common pitfalls"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Pitfall"}),(0,t.jsx)(s.th,{children:"Fix"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsxs)(s.td,{children:["Using ",(0,t.jsx)(s.code,{children:"eth_"})," methods for fee decisions (",(0,t.jsx)(s.code,{children:"eth_gasPrice"}),", ",(0,t.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"}),", ",(0,t.jsx)(s.code,{children:"eth_feeHistory"}),")"]}),(0,t.jsxs)(s.td,{children:["Use ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsxs)(s.td,{children:["Omitting ",(0,t.jsx)(s.code,{children:"from"})," when calling ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]}),(0,t.jsx)(s.td,{children:"Always pass the sender address to receive Karma-aware estimation"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Hardcoding fee assumptions"}),(0,t.jsxs)(s.td,{children:["Build fee UI from returned ",(0,t.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,t.jsx)(s.code,{children:"priorityFeePerGas"})," values"]})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Assuming all users are gasless"}),(0,t.jsx)(s.td,{children:"Handle both states: gasless (zero fees) and deny-listed (premium fees)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Caching estimates across retries"}),(0,t.jsx)(s.td,{children:"Re-estimate near send time \u2014 sender Karma state can change"})]})]})]}),"\n",(0,t.jsx)(s.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/build-for-karma/guides/reputation-integration",children:"Reputation Integration"})}),"\n"]})]})}function u(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(m,{...e})}):m(e)}},9365:(e,s,a)=>{a.d(s,{A:()=>i});a(6540);var n=a(4164);const t={tabItem:"tabItem_Ymn6"};var r=a(4848);function i({children:e,hidden:s,className:a}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,n.A)(t.tabItem,a),hidden:s,children:e})}}}]); \ No newline at end of file diff --git a/assets/js/fbc58520.29f6ec6e.js b/assets/js/fbc58520.29f6ec6e.js deleted file mode 100644 index 082bc27..0000000 --- a/assets/js/fbc58520.29f6ec6e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[2288],{1470:(e,s,n)=>{n.d(s,{A:()=>_});var a=n(6540),t=n(4164),r=n(7559),i=n(3104),l=n(6347),o=n(205),c=n(7485),d=n(1682),h=n(679);function m(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:s}=e;return!!s&&"object"==typeof s&&"value"in s}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:s,children:n}=e;return(0,a.useMemo)((()=>{const e=s??function(e){return m(e).map((({props:{value:e,label:s,attributes:n,default:a}})=>({value:e,label:s,attributes:n,default:a})))}(n);return function(e){const s=(0,d.XI)(e,((e,s)=>e.value===s.value));if(s.length>0)throw new Error(`Docusaurus error: Duplicate values "${s.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[s,n])}function x({value:e,tabValues:s}){return s.some((s=>s.value===e))}function p({queryString:e=!1,groupId:s}){const n=(0,l.W6)(),t=function({queryString:e=!1,groupId:s}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:e,groupId:s});return[(0,c.aZ)(t),(0,a.useCallback)((e=>{if(!t)return;const s=new URLSearchParams(n.location.search);s.set(t,e),n.replace({...n.location,search:s.toString()})}),[t,n])]}function j(e){const{defaultValue:s,queryString:n=!1,groupId:t}=e,r=u(e),[i,l]=(0,a.useState)((()=>function({defaultValue:e,tabValues:s}){if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!x({value:e,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=s.find((e=>e.default))??s[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:s,tabValues:r}))),[c,d]=p({queryString:n,groupId:t}),[m,j]=function({groupId:e}){const s=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,t]=(0,h.Dv)(s);return[n,(0,a.useCallback)((e=>{s&&t.set(e)}),[s,t])]}({groupId:t}),g=(()=>{const e=c??m;return x({value:e,tabValues:r})?e:null})();(0,o.A)((()=>{g&&l(g)}),[g]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!x({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),j(e)}),[d,j,r]),tabValues:r}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=n(4848);function v({className:e,block:s,selectedValue:n,selectValue:a,tabValues:r}){const l=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.a_)(),c=e=>{const s=e.currentTarget,t=l.indexOf(s),i=r[t].value;i!==n&&(o(s),a(i))},d=e=>{let s=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;s=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;s=l[n]??l[l.length-1];break}}s?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},e),children:r.map((({value:e,label:s,attributes:a})=>(0,b.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{l.push(e)},onKeyDown:d,onClick:c,...a,className:(0,t.A)("tabs__item",f.tabItem,a?.className,{"tabs__item--active":n===e}),children:s??e},e)))})}function P({lazy:e,children:s,selectedValue:n}){const r=(Array.isArray(s)?s:[s]).filter(Boolean);if(e){const e=r.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:r.map(((e,s)=>(0,a.cloneElement)(e,{key:s,hidden:e.props.value!==n})))})}function y(e){const s=j(e);return(0,b.jsxs)("div",{className:(0,t.A)(r.G.tabs.container,"tabs-container",f.tabList),children:[(0,b.jsx)(v,{...s,...e}),(0,b.jsx)(P,{...s,...e})]})}function _(e){const s=(0,g.A)();return(0,b.jsx)(y,{...e,children:m(e.children)},String(s))}},8453:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>l});var a=n(6540);const t={},r=a.createContext(t);function i(e){const s=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),a.createElement(r.Provider,{value:s},e.children)}},8742:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>h});const a=JSON.parse('{"id":"build-for-karma/guides/gasless-integration","title":"Gasless Integration Guide","description":"Practical integration guide for building gasless UX on Status Network.","source":"@site/docs/build-for-karma/guides/gasless-integration.md","sourceDirName":"build-for-karma/guides","slug":"/build-for-karma/guides/gasless-integration","permalink":"/build-for-karma/guides/gasless-integration","draft":false,"unlisted":false,"editUrl":"https://github.com/status-im/docs.status.network/tree/develop/docs/build-for-karma/guides/gasless-integration.md","tags":[],"version":"current","lastUpdatedAt":1773439140000,"sidebarPosition":5,"frontMatter":{"title":"Gasless Integration Guide","description":"Practical integration guide for building gasless UX on Status Network.","keywords":["gasless","linea_estimateGas","Status Network","deny list","builder","zero gas","UX"],"slug":"/build-for-karma/guides/gasless-integration","sidebar_position":5},"sidebar":"buildForKarmaSidebar","previous":{"title":"Using Karma","permalink":"/build-for-karma/guides"},"next":{"title":"\ud83d\udd30 Reputation Integration","permalink":"/build-for-karma/guides/reputation-integration"}}');var t=n(4848),r=n(8453),i=n(1470),l=n(9365);const o={title:"Gasless Integration Guide",description:"Practical integration guide for building gasless UX on Status Network.",keywords:["gasless","linea_estimateGas","Status Network","deny list","builder","zero gas","UX"],slug:"/build-for-karma/guides/gasless-integration",sidebar_position:5},c=void 0,d={},h=[{value:"Karma-aware fee estimation",id:"karma-aware-fee-estimation",level:2},{value:"linea_estimateGas request/response shape",id:"linea_estimategas-requestresponse-shape",level:2},{value:"Request",id:"request",level:3},{value:"Response",id:"response",level:3},{value:"Migration guide: from multiple eth_ calls to linea_estimateGas",id:"migration-guide-from-multiple-eth_-calls-to-linea_estimategas",level:2},{value:"Before: common EIP-1559 estimation flow on EVM chains using eth_ namespaces",id:"before-common-eip-1559-estimation-flow-on-evm-chains-using-eth_-namespaces",level:3},{value:"After: Status Network gas estimation flow using linea_estimateGas",id:"after-status-network-gas-estimation-flow-using-linea_estimategas",level:3},{value:"Handling fee scenarios in UI",id:"handling-fee-scenarios-in-ui",level:2},{value:"1) Gasless",id:"1-gasless",level:3},{value:"2) Premium fees",id:"2-premium-fees",level:3},{value:"Common pitfalls",id:"common-pitfalls",level:2},{value:"Next steps",id:"next-steps",level:2}];function m(e){const s={a:"a",admonition:"admonition",annotation:"annotation",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",math:"math",mermaid:"mermaid",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",ol:"ol",p:"p",pre:"pre",semantics:"semantics",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"Status Network provides gasless transactions at the protocol level. You do not need paymasters or relayers. As a builder, the core task is to estimate and present fees correctly per sender state."}),"\n",(0,t.jsx)(s.admonition,{title:"The key rule",type:"important",children:(0,t.jsxs)(s.p,{children:["Use ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," RPC method as the source of truth for gas fee when preparing transaction UX."]})}),"\n",(0,t.jsxs)(s.p,{children:["For other JSON-RPC method reference, see ",(0,t.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"}),"."]}),"\n",(0,t.jsx)(s.h2,{id:"karma-aware-fee-estimation",children:"Karma-aware fee estimation"}),"\n",(0,t.jsxs)(s.p,{children:["On Linea, ",(0,t.jsx)(s.a,{href:"https://docs.linea.build/api/reference/linea-estimategas",children:(0,t.jsx)(s.code,{children:"linea_estimateGas"})})," is already the recommended way to estimate gas.\nIt returns ",(0,t.jsx)(s.code,{children:"gasLimit"}),", ",(0,t.jsx)(s.code,{children:"baseFeePerGas"}),", and ",(0,t.jsx)(s.code,{children:"priorityFeePerGas"})," in a ",(0,t.jsx)(s.strong,{children:"single call"}),", where the fee fields account for compressed transaction size, layer-1 verification costs, and the L1/L2 gas-price ratio - factors that ",(0,t.jsx)(s.code,{children:"eth_"})," namespace methods do not capture."]}),"\n",(0,t.jsxs)(s.p,{children:["Status Network extends ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," further so that the fee fields also incorporate our ",(0,t.jsx)(s.strong,{children:"Karma"})," system; fees may be reduced to zero for eligible users, or increased for deny-listed users."]}),"\n",(0,t.jsx)(s.mermaid,{value:'flowchart TD\n A[User initiates transaction] --\x3e B["Call linea_estimateGas with from parameter"]\n B --\x3e C{Fee outcome}\n C --\x3e|base+priority = 0| D[Show gasless UX]\n C --\x3e|Premium fees| F[Show premium fee UX]\n D --\x3e G[Send transaction]\n F --\x3e G'}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.em,{children:["Figure: Gas estimation flow using ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]})}),"\n",(0,t.jsxs)(s.p,{children:["This is why builders should use ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," when estimating transaction costs or pre-filling EIP-1559 fee fields for users on Status Network."]}),"\n",(0,t.jsxs)(s.admonition,{title:"for more",type:"info",children:[(0,t.jsxs)(s.p,{children:["For a detailed explanation of Karma and its impact on gas fees and transaction privileges, see the ",(0,t.jsx)(s.a,{href:"../../overview/tokenomics/karmic-tokenomics",children:"Karmic Tokenomics"})," page."]}),(0,t.jsxs)(s.p,{children:["For the technical details of how our gasless system is implemented and enforced, refer to the ",(0,t.jsx)(s.a,{href:"../../overview/general-info/gasless-transactions",children:"Gasless Transactions"})," documentation."]})]}),"\n",(0,t.jsxs)(s.h2,{id:"linea_estimategas-requestresponse-shape",children:[(0,t.jsx)(s.code,{children:"linea_estimateGas"})," request/response shape"]}),"\n",(0,t.jsx)(s.h3,{id:"request",children:"Request"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"linea_estimateGas"})," takes the ",(0,t.jsx)(s.strong,{children:"same transaction call object"})," as ",(0,t.jsx)(s.code,{children:"eth_estimateGas"}),".\nIt returns ",(0,t.jsx)(s.code,{children:"gasLimit"})," (using the same EVM execution logic as ",(0,t.jsx)(s.code,{children:"eth_estimateGas"}),") together with fee fields that reflect both Linea's L2-specific pricing and Status Network's Karma rules - all in a single response."]}),"\n",(0,t.jsx)(s.admonition,{type:"important",children:(0,t.jsxs)(s.p,{children:[(0,t.jsxs)(s.strong,{children:["Always include ",(0,t.jsx)(s.code,{children:"from"}),"."]})," Without it, the node can't apply Karma/quota/deny-list logic."]})}),"\n",(0,t.jsx)(s.h3,{id:"response",children:"Response"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"linea_estimateGas"})," returns an object including:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"gasLimit"}),": hex quantity - estimated gas units for EVM execution (same calculation as ",(0,t.jsx)(s.code,{children:"eth_estimateGas"}),")"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"baseFeePerGas"}),": hex quantity - base fee for the next block, accounting for Karma rules on Status Network"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"priorityFeePerGas"}),": hex quantity - suggested priority fee, accounting for Karma rules on Status Network"]}),"\n"]}),"\n",(0,t.jsxs)(s.p,{children:["These fee fields may differ significantly from the values returned by ",(0,t.jsx)(s.code,{children:"eth_"})," namespace calls such as ",(0,t.jsx)(s.code,{children:"eth_gasPrice"}),", ",(0,t.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"}),", or ",(0,t.jsx)(s.code,{children:"eth_feeHistory"}),", which are not aware of Linea's L2-specific pricing or Status Network's Karma adjustments."]}),"\n",(0,t.jsxs)(i.A,{groupId:"estimate-gas-response-shape",children:[(0,t.jsx)(l.A,{value:"linea",label:"linea_estimateGas (single call)",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "gasLimit": "0x5208",\n "baseFeePerGas": "0x0",\n "priorityFeePerGas": "0x0"\n }\n}\n'})})}),(0,t.jsxs)(l.A,{value:"eth",label:"Standard EVM (multiple calls)",children:[(0,t.jsxs)(s.p,{children:["Standard EVM flows require multiple separate ",(0,t.jsx)(s.code,{children:"eth_"})," calls to gather gas limit and fee data:"]}),(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"eth_estimateGas"})}),(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 1,\n "result": "0x5208"\n}\n'})}),(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"eth_maxPriorityFeePerGas"})}),(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 2,\n "result": "0x59682f00"\n}\n'})}),(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"eth_getBlockByNumber"})}),(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": 3,\n "result": {\n "number": ...,\n "baseFeePerGas": "0x3b9aca00",\n ...\n }\n}\n'})})]})]}),"\n",(0,t.jsxs)(s.h2,{id:"migration-guide-from-multiple-eth_-calls-to-linea_estimategas",children:["Migration guide: from multiple ",(0,t.jsx)(s.code,{children:"eth_"})," calls to ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]}),"\n",(0,t.jsxs)(s.p,{children:['This section shows how to migrate from the common "EIP-1559 via multiple ',(0,t.jsx)(s.code,{children:"eth_"}),' calls" flow to a single ',(0,t.jsx)(s.code,{children:"linea_estimateGas"})," call, which provides more accurate L2-specific fee data and Karma-aware pricing on Status Network."]}),"\n",(0,t.jsxs)(s.h3,{id:"before-common-eip-1559-estimation-flow-on-evm-chains-using-eth_-namespaces",children:["Before: common EIP-1559 estimation flow on EVM chains using ",(0,t.jsx)(s.code,{children:"eth_"})," namespaces"]}),"\n",(0,t.jsx)(s.p,{children:"On many EVM chains, a typical EIP-1559 estimation flow looks like:"}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Estimate gas limit"})," via ",(0,t.jsx)(s.code,{children:"eth_estimateGas"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsxs)(s.strong,{children:["Fetch ",(0,t.jsx)(s.code,{children:"maxPriorityFeePerGas"})]})," via ",(0,t.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"})," and/or ",(0,t.jsx)(s.code,{children:"eth_feeHistory"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsxs)(s.strong,{children:["Fetch ",(0,t.jsx)(s.code,{children:"baseFeePerGas"})]})," via ",(0,t.jsx)(s.code,{children:"eth_getBlockByNumber"})]}),"\n",(0,t.jsxs)(s.li,{children:["Build an EIP-1559 transaction using:","\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"gas"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"maxPriorityFeePerGas"})}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"maxFeePerGas"}),", often ",(0,t.jsxs)(s.span,{className:"katex",children:[(0,t.jsx)(s.span,{className:"katex-mathml",children:(0,t.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,t.jsxs)(s.semantics,{children:[(0,t.jsxs)(s.mrow,{children:[(0,t.jsx)(s.mn,{children:"2"}),(0,t.jsx)(s.mo,{children:"\u22c5"}),(0,t.jsxs)(s.mrow,{children:[(0,t.jsx)(s.mi,{mathvariant:"normal",children:"b"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"s"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"F"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"P"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"G"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"s"})]}),(0,t.jsx)(s.mo,{children:"+"}),(0,t.jsxs)(s.mrow,{children:[(0,t.jsx)(s.mi,{mathvariant:"normal",children:"m"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"x"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"P"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"i"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"o"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"i"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"t"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"y"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"F"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"P"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"e"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"r"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"G"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"a"}),(0,t.jsx)(s.mi,{mathvariant:"normal",children:"s"})]})]}),(0,t.jsx)(s.annotation,{encoding:"application/x-tex",children:"2 \\cdot \\mathrm{baseFeePerGas} + \\mathrm{maxPriorityFeePerGas}"})]})})}),(0,t.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,t.jsxs)(s.span,{className:"base",children:[(0,t.jsx)(s.span,{className:"strut",style:{height:"0.6444em"}}),(0,t.jsx)(s.span,{className:"mord",children:"2"}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,t.jsx)(s.span,{className:"mbin",children:"\u22c5"}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,t.jsxs)(s.span,{className:"base",children:[(0,t.jsx)(s.span,{className:"strut",style:{height:"0.7778em",verticalAlign:"-0.0833em"}}),(0,t.jsx)(s.span,{className:"mord",children:(0,t.jsx)(s.span,{className:"mord mathrm",children:"baseFeePerGas"})}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,t.jsx)(s.span,{className:"mbin",children:"+"}),(0,t.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,t.jsxs)(s.span,{className:"base",children:[(0,t.jsx)(s.span,{className:"strut",style:{height:"0.8778em",verticalAlign:"-0.1944em"}}),(0,t.jsx)(s.span,{className:"mord",children:(0,t.jsx)(s.span,{className:"mord mathrm",children:"maxPriorityFeePerGas"})})]})]})]})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(i.A,{groupId:"eip1559-estimation-before",children:[(0,t.jsx)(l.A,{value:"curl",label:"curl",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-bash",children:'# 1) Gas limit (EVM execution)\ncurl -X POST -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc":"2.0",\n "id":1,\n "method":"eth_estimateGas",\n "params":[{\n "from":"0xYOUR_SENDER",\n "to":"0xCONTRACT_OR_RECIPIENT",\n "data":"0xYOUR_CALLDATA",\n "value":"0x0"\n }]\n }\' \\\n https://YOUR_RPC_URL\n\n# 2) Fetch suggested tip amount\ncurl -X POST -H "Content-Type: application/json" \\\n --data \'{"jsonrpc":"2.0","id":2,"method":"eth_maxPriorityFeePerGas","params":[]}\' \\\n https://YOUR_RPC_URL\n\n# 3) Fetch base fee\ncurl -X POST -H "Content-Type: application/json" \\\n --data \'{"jsonrpc":"2.0","id":3,"method":"eth_getBlockByNumber","params":["pending",false]}\' \\\n https://YOUR_RPC_URL\n'})})}),(0,t.jsx)(l.A,{value:"ethers",label:"ethers.js",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.JsonRpcProvider('https://YOUR_RPC_URL');\n\nconst call = {\n from: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: '0x0',\n};\n\nconst gas = await provider.estimateGas(call);\nconst maxPriorityFeePerGas = await provider.send('eth_maxPriorityFeePerGas', []);\nconst pendingBlock = await provider.getBlock('pending');\n\nconst baseFeePerGas = pendingBlock?.baseFeePerGas ?? 0n;\nconst maxFeePerGas = 2n * baseFeePerGas + BigInt(maxPriorityFeePerGas);\n\nconsole.log({\n gas: `0x${gas.toString(16)}`,\n maxPriorityFeePerGas,\n maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,\n});\n"})})}),(0,t.jsx)(l.A,{value:"viem",label:"viem",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { createPublicClient, http } from 'viem';\n\nconst client = createPublicClient({\n transport: http('https://YOUR_RPC_URL'),\n});\n\nconst call = {\n account: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: 0n,\n};\n\nconst gas = await client.estimateGas(call);\nconst maxPriorityFeePerGas = await client.getMaxPriorityFeePerGas();\nconst pendingBlock = await client.getBlock({ blockTag: 'pending' });\n\nconst baseFeePerGas = pendingBlock.baseFeePerGas ?? 0n;\nconst maxFeePerGas = 2n * baseFeePerGas + maxPriorityFeePerGas;\n\nconsole.log({\n gas,\n maxPriorityFeePerGas,\n maxFeePerGas,\n});\n"})})})]}),"\n",(0,t.jsxs)(s.h3,{id:"after-status-network-gas-estimation-flow-using-linea_estimategas",children:["After: Status Network gas estimation flow using ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]}),"\n",(0,t.jsxs)(s.p,{children:["On Status Network, you should source fee suggestions from ",(0,t.jsx)(s.code,{children:"linea_estimateGas"}),", because the correct fee recommendation depends on Karma:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["accounts may be eligible for ",(0,t.jsx)(s.strong,{children:"gasless"})," transactions"]}),"\n",(0,t.jsxs)(s.li,{children:["deny-listed accounts may need to pay a ",(0,t.jsx)(s.strong,{children:"premium gas fee"})]}),"\n"]}),"\n",(0,t.jsxs)(i.A,{groupId:"linea-estimate-gas-request",children:[(0,t.jsx)(l.A,{value:"curl",label:"curl",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-bash",children:'curl -X POST -H "Content-Type: application/json" \\\n --data \'{\n "jsonrpc":"2.0",\n "id":1,\n "method":"linea_estimateGas",\n "params":[{\n "from":"0xYOUR_SENDER",\n "to":"0xCONTRACT_OR_RECIPIENT",\n "data":"0xYOUR_CALLDATA",\n "value":"0x0"\n }]\n }\' \\\n https://YOUR_STATUS_NETWORK_RPC_URL\n'})})}),(0,t.jsx)(l.A,{value:"ethers",label:"ethers.js",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.JsonRpcProvider('https://YOUR_STATUS_NETWORK_RPC_URL');\n\nconst call = {\n from: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: '0x0',\n};\n\nconst { gasLimit, baseFeePerGas, priorityFeePerGas } = await provider.send(\n 'linea_estimateGas',\n [call],\n);\n\nconst maxFeePerGas =\n BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);\n\nconsole.log({\n gas: gasLimit,\n maxPriorityFeePerGas: priorityFeePerGas,\n maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,\n});\n"})})}),(0,t.jsx)(l.A,{value:"viem",label:"viem",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:"import { createPublicClient, http } from 'viem';\n\nconst client = createPublicClient({\n transport: http('https://YOUR_STATUS_NETWORK_RPC_URL'),\n});\n\nconst call = {\n from: '0xYOUR_SENDER',\n to: '0xCONTRACT_OR_RECIPIENT',\n data: '0xYOUR_CALLDATA',\n value: 0n,\n};\n\nconst { gasLimit, baseFeePerGas, priorityFeePerGas } = await client.request({\n method: 'linea_estimateGas',\n params: [call],\n});\n\nconst maxFeePerGas =\n BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);\n\nconsole.log({\n gas: gasLimit,\n maxPriorityFeePerGas: priorityFeePerGas,\n maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,\n});\n"})})})]}),"\n",(0,t.jsx)(s.admonition,{title:"Tooling integration",type:"tip",children:(0,t.jsxs)(s.p,{children:["Many Ethereum libraries call ",(0,t.jsx)(s.code,{children:"eth_estimateGas"})," internally (for example, ",(0,t.jsx)(s.code,{children:"provider.estimateGas(...)"}),"). On Status Network, keep using those libraries for standard ",(0,t.jsx)(s.code,{children:"eth_"})," methods, but ",(0,t.jsxs)(s.strong,{children:["fetch estimates via ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})," explicitly for gas limit and fee fields"]})," wherever you build or display transaction parameters for users."]})}),"\n",(0,t.jsx)(s.h2,{id:"handling-fee-scenarios-in-ui",children:"Handling fee scenarios in UI"}),"\n",(0,t.jsx)(s.h3,{id:"1-gasless",children:"1) Gasless"}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,t.jsx)(s.code,{children:"priorityFeePerGas"})," are both zero:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Display a clear free-transaction state."}),"\n",(0,t.jsx)(s.li,{children:"Skip unnecessary fee warnings."}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"2-premium-fees",children:"2) Premium fees"}),"\n",(0,t.jsx)(s.p,{children:"When sender is deny-listed (exceeded quota or RLN policy):"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Show the fee amount and explain that premium gas applies due to quota or spam policy."}),"\n",(0,t.jsx)(s.li,{children:"Make clear the sender can pay the fee or wait for their quota window to refresh."}),"\n",(0,t.jsx)(s.li,{children:"Keep the transaction possible; do not hard-block."}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"common-pitfalls",children:"Common pitfalls"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{children:"Pitfall"}),(0,t.jsx)(s.th,{children:"Fix"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsxs)(s.td,{children:["Using ",(0,t.jsx)(s.code,{children:"eth_"})," methods for fee decisions (",(0,t.jsx)(s.code,{children:"eth_gasPrice"}),", ",(0,t.jsx)(s.code,{children:"eth_maxPriorityFeePerGas"}),", ",(0,t.jsx)(s.code,{children:"eth_feeHistory"}),")"]}),(0,t.jsxs)(s.td,{children:["Use ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsxs)(s.td,{children:["Omitting ",(0,t.jsx)(s.code,{children:"from"})," when calling ",(0,t.jsx)(s.code,{children:"linea_estimateGas"})]}),(0,t.jsx)(s.td,{children:"Always pass the sender address to receive Karma-aware estimation"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Hardcoding fee assumptions"}),(0,t.jsxs)(s.td,{children:["Build fee UI from returned ",(0,t.jsx)(s.code,{children:"baseFeePerGas"})," and ",(0,t.jsx)(s.code,{children:"priorityFeePerGas"})," values"]})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Assuming all users are gasless"}),(0,t.jsx)(s.td,{children:"Handle both states: gasless (zero fees) and deny-listed (premium fees)"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Caching estimates across retries"}),(0,t.jsx)(s.td,{children:"Re-estimate near send time \u2014 sender Karma state can change"})]})]})]}),"\n",(0,t.jsx)(s.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/tools/rpc/json-rpc",children:"JSON-RPC API"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"/build-for-karma/guides/reputation-integration",children:"Reputation Integration"})}),"\n"]})]})}function u(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(m,{...e})}):m(e)}},9365:(e,s,n)=>{n.d(s,{A:()=>i});n(6540);var a=n(4164);const t={tabItem:"tabItem_Ymn6"};var r=n(4848);function i({children:e,hidden:s,className:n}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,n),hidden:s,children:e})}}}]); \ No newline at end of file diff --git a/assets/js/main.7c66aeee.js b/assets/js/main.7c66aeee.js deleted file mode 100644 index e897bbd..0000000 --- a/assets/js/main.7c66aeee.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.7c66aeee.js.LICENSE.txt */ -(self.webpackChunkstatus_network_docs=self.webpackChunkstatus_network_docs||[]).push([[8792],{115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(!a(e[l],i[l]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!a(l.value[1],i.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(e[l]!==i[l])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(i,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!a(e[c[l]],i[c[l]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},119:(e,t,n)=>{"use strict";n.r(t)},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},311:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(5311);var o=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(o).default}});var a=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},545:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>W});var r=n(6540),o=n(5556),a=n.n(o),i=n(115),s=n.n(i),l=n(311),c=n.n(l),u=n(2833),d=n.n(u);function f(){return f=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},y={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},T=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},A=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},D=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=M(n,o),[r.createElement(g.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=I(n),a=j(t);return o?"<"+e+' data-rh="true" '+o+">"+R(a,r)+"":"<"+e+' data-rh="true">'+R(a,r)+""}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return D(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===L.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,s=e.title,l=void 0===s?"":s,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=O(e.metaTags,v),a=O(t,b),i=O(n,y);return{priorityMethods:{toComponent:function(){return[].concat(D(g.META,o.priority),D(g.LINK,a.priority),D(g.SCRIPT,i.priority))},toString:function(){return F(g.META,o.priority,r)+" "+F(g.LINK,a.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);p=m.priorityMethods,u=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(g.LINK,u,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,a,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:l,titleAttributes:c},r)}},z=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),V="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=V,W.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var K=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),s=0;s=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},q=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;G(g.BODY,e.bodyAttributes),G(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=j(e)),G(g.TITLE,t)}(u,d);var f={baseTag:K(g.BASE,n),linkTags:K(g.LINK,o),metaTags:K(g.META,a),noscriptTags:K(g.NOSCRIPT,i),scriptTags:K(g.SCRIPT,l),styleTags:K(g.STYLE,c)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),s(e,p,m)},Y=null,Q=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},o,((t={})[r.type]=i,t.titleAttributes=f({},a),t));case g.BODY:return f({},o,{bodyAttributes:f({},a)});case g.HTML:return f({},o,{htmlAttributes:f({},a)});default:return f({},o,((n={})[r.type]=f({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``} ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=h(r,Z),s=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:s,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),o=f({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof $||(a=new $(a.context,a.instances)),a?r.createElement(Q,f({},o,{context:a.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Q,f({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},609:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,t:()=>c});var r=n(6540),o=n(9532),a=n(4848);const i=Symbol("EmptyContext"),s=r.createContext(i);function l({children:e,name:t,items:n}){const o=(0,r.useMemo)((()=>t&&n?{name:t,items:n}:null),[t,n]);return(0,a.jsx)(s.Provider,{value:o,children:e})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},661:(e,t,n)=>{"use strict";var r=n(1765),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t,a=globalThis.Prism;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),"solidity"===e&&n(5624),n(1146)(`./prism-${e}`)})),delete globalThis.Prism,void 0!==a&&(globalThis.Prism=e)}(r.My)},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u,Dv:()=>d});var r=n(6540);const o=JSON.parse('{"N":"localStorage","M":""}'),a=o.N;function i({key:e,oldValue:t,newValue:n,storage:r}){if(t===n)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,e,t,n,window.location.href,r),window.dispatchEvent(o)}function s(e=a){if("undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${o.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const r=s(t?.persistence);return null===r?c:{get:()=>{try{return r.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=r.getItem(n);r.setItem(n,e),i({key:n,oldValue:t,newValue:e,storage:r})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=r.getItem(n);r.removeItem(n),i({key:n,oldValue:e,newValue:null,storage:r})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}function d(e,t){const[n]=(0,r.useState)((()=>null===e?c:u(e,t))),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(o,(()=>n.get()),(()=>null)),n]}},961:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(2551)},1020:(e,t,n)=>{"use strict";var r=n(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:u,props:a,_owner:s.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},1043:(e,t,n)=>{"use strict";n.r(t)},1062:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(6540),o=n(1252),a=n(6025),i=n(8126);function s(){const{withBaseUrl:e}=(0,a.hH)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.c)();return(0,r.useCallback)((r=>{const a=new URL(r);if((0,o.G)(t,a.href))return r;const i=`${a.pathname+a.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(4164),o=n(1312),a=n(3535),i=n(8774),s=n(3427),l=n(4848);function c({as:e,id:t,...n}){const c=(0,s.A)(),u=(0,a.v)(t);if("h1"===e||!t)return(0,l.jsx)(e,{...n,id:void 0});c.collectAnchor(t);const d=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:t});return(0,l.jsxs)(e,{...n,className:(0,r.A)("anchor",u,n.className),id:t,children:[n.children,(0,l.jsx)(i.A,{className:"hash-link",to:`#${t}`,"aria-label":d,title:d,translate:"no",children:"\u200b"})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),o=n(4164),a=n(2303),i=n(5293);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(4848);function c({className:e,children:t}){const n=(0,a.A)(),{colorMode:c}=(0,i.G)();return(0,l.jsx)(l.Fragment,{children:(n?"dark"===c?["dark"]:["light"]:["light","dark"]).map((n=>{const a=t({theme:n,className:(0,o.A)(e,s.themedComponent,s[`themedComponent--${n}`])});return(0,l.jsx)(r.Fragment,{children:a},n)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:({theme:e,className:n})=>(0,l.jsx)("img",{src:t[e],alt:r,className:n,...o})})}},1146:(e,t,n)=>{var r={"./prism-bash":7022,"./prism-solidity":3537};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=1146},1252:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>l});var r=n(6540),o=n(4848);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function s({id:e,message:t}){if(void 0===e&&void 0===t)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[e??t]??t??e}function l({message:e,id:t},n){return a(s({message:e,id:t}),n)}function c({children:e,id:t,values:n}){if(e&&"string"!=typeof e)throw console.warn("Illegal children",e),new Error("The Docusaurus component only accept simple string values");const r=s({message:e,id:t});return(0,o.jsx)(o.Fragment,{children:a(r,n)})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>h,u:()=>l});var r=n(6540),o=n(205),a=n(3109),i=n(4848);const s="ease-in-out";function l({initialState:e}){const[t,n]=(0,r.useState)(e??!1),o=(0,r.useCallback)((()=>{n((e=>!e))}),[]);return{collapsed:t,setCollapsed:n,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f({collapsibleRef:e,collapsed:t,animation:n}){const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const r=e.current;function i(){const e=r.scrollHeight,t=n?.duration??function(e){if((0,a.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(e);return{transition:`height ${t}ms ${n?.easing??s}`,height:`${e}px`}}function l(){const e=i();r.style.transition=e.transition,r.style.height=e.height}if(!o.current)return d(r,t),void(o.current=!0);return r.style.willChange="height",function(){const e=requestAnimationFrame((()=>{t?(l(),requestAnimationFrame((()=>{r.style.height=c.height,r.style.overflow=c.overflow}))):(r.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(e)}()}),[e,t,n])}function p({as:e="div",collapsed:t,children:n,animation:o,onCollapseTransitionEnd:a,className:s}){const l=(0,r.useRef)(null);return f({collapsibleRef:l,collapsed:t,animation:o}),(0,i.jsx)(e,{ref:l,onTransitionEnd:e=>{"height"===e.propertyName&&(d(l.current,t),a?.(t))},className:s,children:n})}function m({collapsed:e,...t}){const[n,a]=(0,r.useState)(!e),[s,l]=(0,r.useState)(e);return(0,o.A)((()=>{e||a(!0)}),[e]),(0,o.A)((()=>{n&&l(e)}),[n,e]),n?(0,i.jsx)(p,{...t,collapsed:s}):null}function h({lazy:e,...t}){const n=e?m:p;return(0,i.jsx)(n,{...t})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(5260),o=n(4848);function a({locale:e,version:t,tag:n}){const a=e;return(0,o.jsxs)(r.A,{children:[e&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:e}),t&&(0,o.jsx)("meta",{name:"docusaurus_version",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:language",content:a}),t&&(0,o.jsx)("meta",{name:"docsearch:version",content:t}),n&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:n})]})}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>T,yJ:()=>p,sC:()=>C,AO:()=>f});var r=n(8168);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;f--){var p=i[f];"."===p?a(i,f):".."===p?(a(i,f),d++):d&&(a(i,f),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(1561);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function p(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,h(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";n.d(t,{A:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},1682:(e,t,n)=>{"use strict";function r(e,t=(e,t)=>e===t){return e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function o(e){return Array.from(new Set(e))}n.d(t,{XI:()=>r,sb:()=>o})},1765:(e,t,n)=>{"use strict";n.d(t,{My:()=>A,f4:()=>ne});var r,o,a,i,s,l,c,u=n(6540),d=n(4164),f=Object.create,p=Object.defineProperty,m=Object.defineProperties,h=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyDescriptors,b=Object.getOwnPropertyNames,y=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(y)for(var n of y(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>m(e,g(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&y)for(var r of y(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},T=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof o)){var _,T=1;if(y){if(!(_=a(k,S,e,b))||_.index>=e.length)break;var A=_.index,C=_.index+_[0].length,P=S;for(P+=x.value.length;A>=P;)P+=(x=x.next).value.length;if(S=P-=x.value.length,x.value instanceof o)continue;for(var j=x;j!==t.tail&&(Pd.reach&&(d.reach=R);var I=x.prev;if(N&&(I=l(t,I,N),S+=N.length),c(t,I,T),x=l(t,I,new o(f,g?r.tokenize(O,g):O,v,O)),L&&l(t,x,L),T>1){var M={cause:f+","+m,reach:R};i(e,t,n,x.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function c(e,t,n){for(var r=t.next,o=0;o"+a.content+""},r}();t.exports=n,n.default=n}},function(){return o||(0,r[b(r)[0]])((o={exports:{}}).exports,o),o.exports}),A=((e,t,n)=>(n=null!=e?f(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of b(t))w.call(e,o)||o===n||p(e,o,{get:()=>t[o],enumerable:!(r=h(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(T());A.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},A.languages.markup.tag.inside["attr-value"].inside.entity=A.languages.markup.entity,A.languages.markup.doctype.inside["internal-subset"].inside=A.languages.markup,A.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(A.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:A.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:A.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},A.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(A.languages.markup.tag,"addAttribute",{value:function(e,t){A.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:A.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),A.languages.html=A.languages.markup,A.languages.mathml=A.languages.markup,A.languages.svg=A.languages.markup,A.languages.xml=A.languages.extend("markup",{}),A.languages.ssml=A.languages.xml,A.languages.atom=A.languages.xml,A.languages.rss=A.languages.xml,a=A,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},l="(?:[^\\\\-]|"+(s=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",l=RegExp(l+"-"+l),c={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},a.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:l,inside:{escape:s,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:s}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":c}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:s,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},A.languages.javascript=A.languages.extend("clike",{"class-name":[A.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),A.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,A.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:A.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:A.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:A.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:A.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:A.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),A.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:A.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),A.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),A.languages.markup&&(A.languages.markup.tag.addInlined("script","javascript"),A.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),A.languages.js=A.languages.javascript,A.languages.actionscript=A.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),A.languages.actionscript["class-name"].alias="function",delete A.languages.actionscript.parameter,delete A.languages.actionscript["literal-property"],A.languages.markup&&A.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:A.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(A),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},o="doc-comment";if(a=e.languages[t]){var a,i=a[o];if((i=i||(a=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[o])instanceof RegExp&&(i=a[o]={pattern:i}),Array.isArray(i))for(var s=0,l=i.length;s|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(A),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(A),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(A),A.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:A.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},A.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function l(t,n,i){var l=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),c=0,u={},d=(l=s(l.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=c++,n="___"+i.toUpperCase()+"_"+r+"___")););return u[n]=e,n})).join(""),n,i),Object.keys(u));return c=0,function t(n){for(var a=0;a=d.length)return;var i,l,f,p,m,h,g,b=n[a];"string"==typeof b||"string"==typeof b.content?(i=d[c],-1!==(g=(h="string"==typeof b?b:b.content).indexOf(i))&&(++c,l=h.substring(0,g),m=u[i],f=void 0,(p={})["interpolation-punctuation"]=o,3===(p=e.tokenize(m,p)).length&&((f=[1,1]).push.apply(f,s(p[1],e.languages.javascript,"javascript")),p.splice.apply(p,f)),f=new e.Token("interpolation",p,r.alias,m),p=h.substring(g+i.length),m=[],l&&m.push(l),m.push(f),p&&(t(h=[p]),m.push.apply(m,h)),"string"==typeof b?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):b.content=m)):(g=b.content,Array.isArray(g)?t(g):t([g]))}}(l),new e.Token(i,l,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var c={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in c&&function t(n){for(var r=0,o=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(A),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(//g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(A),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(A),A.languages.n4js=A.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),A.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),A.languages.n4jsd=A.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function a(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return o})),RegExp(e,t)}function i(t){for(var n=[],r=0;r"!==o.content[o.content.length-1].content&&n.push({tagName:s(o.content[0].content[1]),openedBraces:0}):0+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var s=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(s).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(A),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(A),A.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},A.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=A.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(A),A.languages.c=A.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),A.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),A.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},A.languages.c.string],char:A.languages.c.char,comment:A.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:A.languages.c}}}}),A.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete A.languages.c.boolean,A.languages.objectivec=A.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete A.languages.objectivec["class-name"],A.languages.objc=A.languages.objectivec,A.languages.reason=A.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),A.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete A.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(A),A.languages.go=A.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),A.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete A.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(A),A.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},A.languages.python["string-interpolation"].inside.interpolation.inside.rest=A.languages.python,A.languages.py=A.languages.python,A.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},A.languages.webmanifest=A.languages.json;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>C,duotoneDark:()=>P,duotoneLight:()=>j,github:()=>O,gruvboxMaterialDark:()=>q,gruvboxMaterialLight:()=>Y,jettwaveDark:()=>V,jettwaveLight:()=>W,nightOwl:()=>N,nightOwlLight:()=>L,oceanicNext:()=>M,okaidia:()=>D,oneDark:()=>K,oneLight:()=>G,palenight:()=>F,shadesOfPurple:()=>B,synthwave84:()=>z,ultramin:()=>$,vsDark:()=>U,vsLight:()=>H});var C={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},P={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},j={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},O={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},N={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},L={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},R="#c5a5c5",I="#8dc891",M={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:R}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:R}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},D={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},B={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},z={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},H={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},V={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},K={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},G={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},q={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},Y={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},Q=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:o}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),o);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},Z=/\r\n|\r|\n/,X=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},J=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},ee=e=>{const t=[[]],n=[e],r=[0],o=[e.length];let a=0,i=0,s=[];const l=[s];for(;i>-1;){for(;(a=r[i]++)0?c:["plain"],e=u):(c=J(c,u.type),u.alias&&(c=J(c,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(c),n.push(e),r.push(0),o.push(e.length);continue}const d=e.split(Z),f=d.length;s.push({types:c,content:d[0]});for(let t=1;t{const a=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,u.useState)(Q(t,e)),o=(0,u.useRef)(),a=(0,u.useRef)();return(0,u.useEffect)((()=>{t===o.current&&e===a.current||(o.current=t,a.current=e,r(Q(t,e)))}),[e,t]),n})(a,r),s=(e=>(0,u.useCallback)((t=>{var n=t,{className:r,style:o,line:a}=n,i=_(n,["className","style","line"]);const s=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(s.style=e.plain),"object"==typeof o&&(s.style=S(S({},s.style||{}),o)),s}),[e]))(i),l=(e=>{const t=(0,u.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,u.useCallback)((e=>{var n=e,{token:r,className:o,style:a}=n,i=_(n,["token","className","style"]);const s=E(S({},i),{className:(0,d.A)("token",...r.types,o),children:r.content,style:t(r)});return null!=a&&(s.style=S(S({},s.style||{}),a)),s}),[t])})(i),c=(({prism:e,code:t,grammar:n,language:r})=>{const o=(0,u.useRef)(e);return(0,u.useMemo)((()=>{if(null==n)return ee([t]);const e={code:t,grammar:n,language:r,tokens:[]};return o.current.hooks.run("before-tokenize",e),e.tokens=o.current.tokenize(t,n),o.current.hooks.run("after-tokenize",e),ee(e.tokens)}),[t,n,r])})({prism:o,language:a,code:n,grammar:o.languages[a]});return e({tokens:c,className:`prism-code language-${a}`,style:null!=i?i.root:{},getLineProps:s,getTokenProps:l})},ne=e=>(0,u.createElement)(te,E(S({},e),{prism:e.prism||A,theme:e.theme||U,code:e.code,language:e.language}))},2067:(e,t,n)=>{"use strict";var r=n(6540),o=n(5338),a=n(545),i=n(4625),s=n(4784),l=n(8193);const c=[n(119),n(661),n(6294),n(1043)];var u=n(8328),d=n(6347),f=n(2831),p=n(4848);function m({children:e}){return(0,p.jsx)(p.Fragment,{children:e})}var h=n(4563);const g=e=>e.defaultFormatter(e);function b({children:e}){return(0,p.jsx)(h.AL,{formatter:g,children:e})}function y({children:e}){return(0,p.jsx)(b,{children:e})}var v=n(5260),w=n(4586),k=n(6025),x=n(6342),S=n(5500),E=n(2131),_=n(4090),T=n(2967),A=n(440),C=n(1463);function P(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,w.A)(),r=(0,E.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(v.A,{children:[Object.entries(n).map((([e,{htmlLang:t}])=>(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:t},e))),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function j({permalink:e}){const{siteConfig:{url:t}}=(0,w.A)(),n=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,w.A)(),{pathname:r}=(0,d.zy)();return e+(0,A.Ks)((0,k.Ay)(r),{trailingSlash:n,baseUrl:t})}(),r=e?`${t}${e}`:n;return(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:r}),(0,p.jsx)("link",{rel:"canonical",href:r})]})}function O(){const{i18n:{currentLocale:e}}=(0,w.A)(),{metadata:t,image:n}=(0,x.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:_.w})]}),n&&(0,p.jsx)(S.be,{image:n}),(0,p.jsx)(j,{}),(0,p.jsx)(P,{}),(0,p.jsx)(C.A,{tag:T.C,locale:e}),(0,p.jsx)(v.A,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const N=new Map;var L=n(6125),R=n(6988),I=n(205);function M(e,...t){const n=c.map((n=>{const r=n.default?.[e]??n[e];return r?.(...t)}));return()=>n.forEach((e=>e?.()))}const D=function({children:e,location:t,previousLocation:n}){return(0,I.A)((()=>{n!==t&&(!function({location:e,previousLocation:t}){if(!t)return;const n=e.pathname===t.pathname,r=e.hash===t.hash,o=e.search===t.search;if(n&&r&&!o)return;const{hash:a}=e;if(a){const e=decodeURIComponent(a.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:t,previousLocation:n}),M("onRouteDidUpdate",{previousLocation:n,location:t}))}),[n,t]),e};function F(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,f.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class B extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.A.canUseDOM?M("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=M("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),F(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(D,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(d.qh,{location:t,render:()=>e})})}}const z=B,$="__docusaurus-base-url-issue-banner-suggestion-container";function U(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/!0===e.exact)))return N.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return N.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,p.jsx)(z,{location:e,children:Y})}function Z(){return(0,p.jsx)(K.A,{children:(0,p.jsx)(R.l,{children:(0,p.jsxs)(L.x,{children:[(0,p.jsx)(m,{children:(0,p.jsxs)(y,{children:[(0,p.jsx)(W,{}),(0,p.jsx)(O,{}),(0,p.jsx)(V,{}),(0,p.jsx)(Q,{})]})}),(0,p.jsx)(q,{})]})})})}var X=n(4054);const J=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var ee=n(6921);const te=new Set,ne=new Set,re=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,oe={prefetch:e=>{if(!(e=>!re()&&!ne.has(e)&&!te.has(e))(e))return!1;te.add(e);const t=(0,f.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(X).filter((([e])=>e.replace(/-[^-]+$/,"")===t)).flatMap((([,e])=>Object.values((0,ee.A)(e))));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?J(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!re()&&!ne.has(e))(e)&&(ne.add(e),F(e))},ae=Object.freeze(oe);function ie({children:e}){return"hash"===s.default.future.experimental_router?(0,p.jsx)(i.I9,{children:e}):(0,p.jsx)(i.Kd,{children:e})}const se=Boolean(!0);if(l.A.canUseDOM){window.docusaurus=ae;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(a.vd,{children:(0,p.jsx)(ie,{children:(0,p.jsx)(Z,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(se)window.docusaurusRoot=o.hydrateRoot(e,t,{onRecoverableError:n});else{const r=o.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};F(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>m,e:()=>p});var r=n(6540),o=n(5600),a=n(4581),i=n(7485),s=n(6342),l=n(9532),c=n(4848);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,s.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1),c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f({handler:e}){return(0,i.$Z)(e),null}function p({children:e}){const t=d();return(0,c.jsxs)(c.Fragment,{children:[t.shown&&(0,c.jsx)(f,{handler:()=>(t.toggle(),!1)}),(0,c.jsx)(u.Provider,{value:t,children:e})]})}function m(){const e=r.useContext(u);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),o=n(6347),a=n(440);function i(){const{siteConfig:{baseUrl:e,trailingSlash:t},i18n:{localeConfigs:n}}=(0,r.A)(),{pathname:i}=(0,o.zy)(),s=(0,a.Ks)(i,{trailingSlash:t,baseUrl:e}).replace(e,"");return{createUrl:function({locale:e,fullyQualified:t}){const r=function(e){const t=n[e];if(!t)throw new Error(`Unexpected Docusaurus bug, no locale config found for locale=${e}`);return t}(e);return`${`${t?r.url:""}`}${r.baseUrl}${s}`}}}},2181:(e,t,n)=>{"use strict";n.d(t,{bq:()=>u,MN:()=>c,a2:()=>l,k2:()=>d});var r=n(6540),o=n(1312),a=n(440);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var s=n(4848);function l(e){return(0,s.jsx)("button",{type:"button",...e,children:(0,s.jsx)(o.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function c({error:e,tryAgain:t}){return(0,s.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,s.jsx)("p",{children:e.message}),(0,s.jsx)(l,{onClick:t})]})}function u({error:e}){const t=(0,a.rA)(e).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{className:i.errorBoundaryError,children:t})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6125);function a(){return(0,r.useContext)(o.o)}},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n