From ed49e30415134500fd259dc168fb5b5ecdd4319a Mon Sep 17 00:00:00 2001 From: konstantin Date: Thu, 19 Feb 2026 15:48:05 +0700 Subject: [PATCH 1/2] changed github link, repositioned debugging --- .../{debugging/index.md => docs/debugging.md} | 14 ++-- docs/docs/faq.md | 75 ------------------ .../img/contract-inactive.png | Bin docs/{debugging => docs}/img/debugging.jpg | Bin docs/docs/index.md | 2 +- docusaurus.config.js | 8 +- 6 files changed, 9 insertions(+), 90 deletions(-) rename docs/{debugging/index.md => docs/debugging.md} (94%) delete mode 100644 docs/docs/faq.md rename docs/{debugging => docs}/img/contract-inactive.png (100%) rename docs/{debugging => docs}/img/debugging.jpg (100%) diff --git a/docs/debugging/index.md b/docs/docs/debugging.md similarity index 94% rename from docs/debugging/index.md rename to docs/docs/debugging.md index 5c53051..f5a71f4 100644 --- a/docs/debugging/index.md +++ b/docs/docs/debugging.md @@ -1,12 +1,12 @@ --- -sidebar_position: 1 title: Debugging +sidebar_position: 14 description: The page dedicated to debugging of most frequent errors and issues on Reactive Network. -slug: /debugging/ +slug: /debugging hide_title: true --- -![Debugging Image](./img/debugging.jpg) +![Debugging Image](../docs/img/debugging.jpg) ## Overview @@ -31,13 +31,13 @@ bytes memory payload = abi.encodeWithSignature( emit Callback(chain_id, stop_order, CALLBACK_GAS_LIMIT, payload); ``` -[More on Callbacks →](../docs/events-and-callbacks.md#callbacks-to-destination-chains) +[More on Callbacks →](events-and-callbacks.md#callbacks-to-destination-chains) ## Contract Inactive If you see `Contract Status: Inactive` on Reactscan, it means the contract doesn’t have enough funds to cover gas for reactive transactions. Both **destination** and **reactive contracts** must hold sufficient balance to stay active. -![Debugging Image](./img/contract-inactive.png) +![Debugging Image](../docs/img/contract-inactive.png) You can either fund the relevant contract on deployment: @@ -67,7 +67,7 @@ To check the outstanding debt, query the relevant proxy contract (`0x00000000000 cast call $PROXY_ADDR "debts(address)" $CONTRACT_ADDR --rpc-url $RPC_URL | cast to-dec ``` -[More on Reactive Economy →](../docs/economy.md) +[More on Reactive Economy →](economy.md) ## Getting Testnet lREACT @@ -111,7 +111,7 @@ cast send 0x2afaFD298b23b62760711756088F75B7409f5967 \ --value 0.1ether ``` -[More on Reactive Faucet →](../docs/reactive-mainnet.mdx#get-testnet-react) +[More on Reactive Faucet →](reactive-mainnet.mdx#get-testnet-react) ## Reactive Faucet Issue diff --git a/docs/docs/faq.md b/docs/docs/faq.md deleted file mode 100644 index 3d04503..0000000 --- a/docs/docs/faq.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: FAQ -sidebar_position: 14 -description: Find the answers to the most frequetly asked questions about the Reactive Network's architecture, features, and capabilities. -slug: /faq -hide_title: true ---- - -![Reactive FAQ Image](./img/faq.jpg) - -## General Questions - -**What problem does the Reactive Network solve?** - -It enables the execution of arbitrary Solidity logic without user intervention and provides reactive contracts that allow users to subscribe to remote ecosystem events. These contracts can affect protocols across chains based on incoming data. - -**How is the Reactive Network different from other cross-chain relayers?** - -Existing cross-chain relayers often need to be integrated into your infrastructure during development and may be specific to certain use cases. The Reactive Network generalizes this concept and can apply arbitrary EVM logic. Unlike many cross-chain relayers, the Reactive Network can execute arbitrary EVM logic, not limited to predefined use cases. - -**What is the Reactive Network physically?** - -The Reactive Network is a fork of Geth, compatible with the Ethereum Virtual Machine, and operates on a Proof of Stake protocol using Prism. It generates blocks approximately every 7 seconds. A Reactive Network node subscribes to other ecosystems' nodes via WebSocket and monitors the `newheads` event. When triggered, the node obtains transaction receipts, searches for subscribers within the Reactive Network, and propagates event logs to their reactVMs. The state of the Reactive Network is determined by the collective states of reactVMs and their connections to external blockchains. - -**How is the Reactive Network different from Geth?** - -The Reactive Network can listen to other blockchains by subscribing to their event logs. It uses event logs from different blockchains to identify reactive contracts subscribed to various topics, execute their logic, and propagate results. This computation occurs outside the main layer, making the process more cost-effective. - -**Is there any nuance to the Reactive Network?** - -Simply increasing the gas limit for blocks would compromise decentralization, leading to fewer validators. The Reactive Network includes an additional layer called reactVM to manage computations while maintaining decentralization. - -**What is meant by a dual-state environment?** - -Each reactive contract operates in a dual-state environment with two instances initialized in the constructor. The reactVM instance updates its state based on events, while the Reactive Network instance updates its state through manual function calls. - -**Why do we always have two contract copies — in the Reactive Network and reactVM?** - -The architecture enables parallel transaction execution. The Ethereum Virtual Machine (EVM) is single-threaded, processing commands one at a time. To overcome this limitation, the Reactive Network uses reactVMs which execute independently and in parallel. Each contract copy in this architecture handles its own state and execution context. - -## Subscriptions - -**Are subscriptions to one or multiple events from different chain IDs allowed?** - -Yes, users can subscribe to events from all chains with a single subscription by specifying the chain ID as `uint256(0)`. Note: Use either `REACTIVE_IGNORE` for topics 0-3 or `uint256(0)` for the chain ID and `addres(0)` for contact address, but not altogether. Subscribing to events from all chains and all contracts simultaneously is not allowed, nor is subscribing to all events from only one chain, as it is considered unnecessary. - -**Are identical subscriptions allowed. Why?** - -Duplicate subscriptions are allowed but function as a single subscription. Users are charged for each transaction they send to the system contract. Preventing duplicate subscriptions in the system contract is costly due to EVM storage limitations. Therefore, to keep costs manageable, duplicate subscriptions are permitted. - -## Technical Questions - -**Why does the `subscribe()` function not work when used in a `react()` function to subscribe to another contract?** - -The `subscribe()` function will not work directly from the RVM because the system contract resides in the Reactive Network, not within the RVM. To subscribe or unsubscribe from the RVM, you should emit the `Callback` event, which will send a callback to the Reactive Network. - -**The call `(bool subscription_result,) = address(service).call(payload);` is failing, resulting in `vm = false`. What could be the issue?** - -This failure occurs because a reactive contract exists in two instances: on the Reactive Network and within your reactVM. The call will fail in the RVM instance since the System Contract doesn't exist there, so `vm` will be true. It will succeed in the Reactive Network instance, so `vm` will be false. - -**My deployed reactive contract doesn't seem to catch the emitted events. Running the `react()` function using a cast call doesn’t trigger any response either. What should I do?** - -If your cast calls the Reactive Network instance of the contract, the callback won’t be triggered because it can only be invoked by the RVM instance. To invoke a callback, you should run the transaction on the origin chain, which will trigger the reactive contract and the callback. - -**How can I check if my reactive contract is listening to my origin contract events?** - -You can verify this by checking for a new transaction on [Reactive Scan](https://reactscan.net/) in the relevant RVM. - -**What is received in `bytes calldata` in the `react()` function?** - -The `bytes calldata` contains the encoded data of all elements other than topics. - -**What does the `REACTIVE_IGNORE` value for topics mean?** - -Setting a specific topic as `REACTIVE_IGNORE` means that reactive contracts will not filter events by this topic when subscribing to events. However, events with any value for this topic will still be accessible. diff --git a/docs/debugging/img/contract-inactive.png b/docs/docs/img/contract-inactive.png similarity index 100% rename from docs/debugging/img/contract-inactive.png rename to docs/docs/img/contract-inactive.png diff --git a/docs/debugging/img/debugging.jpg b/docs/docs/img/debugging.jpg similarity index 100% rename from docs/debugging/img/debugging.jpg rename to docs/docs/img/debugging.jpg diff --git a/docs/docs/index.md b/docs/docs/index.md index ed715e9..b7cfa0f 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -52,7 +52,7 @@ Reactive contracts receive event logs from various chains, executing Solidity lo [FAQ →](./faq.md) Find answers to common questions. -[Debugging →](../debugging/index.md) Debug errors and issues related to Reactive and beyond. +[Debugging →](debugging.md) Debug errors and issues related to Reactive and beyond. [Contacts →](../contacts/index.md) Reach out via socials for technical or trading inquiries. diff --git a/docusaurus.config.js b/docusaurus.config.js index 712dbd4..ebaa2cc 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -118,12 +118,6 @@ const config = { position: "left", label: "Education", }, - { - type: "docSidebar", - sidebarId: "debugging", - position: "left", - label: "Debugging", - }, { type: "docSidebar", sidebarId: "contacts", @@ -141,7 +135,7 @@ const config = { position: 'right', }, { - href: 'https://github.com/Reactive-Network', + href: 'https://github.com/Reactive-Network/reactive-smart-contract-demos', label: 'GitHub', position: 'right', }, From 7a83d1eea79f1b69e29683855d9fdce23805d334 Mon Sep 17 00:00:00 2001 From: konstantin Date: Thu, 19 Feb 2026 15:52:53 +0700 Subject: [PATCH 2/2] removed unused link --- docs/docs/index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/docs/index.md b/docs/docs/index.md index b7cfa0f..a101fa2 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -50,8 +50,6 @@ Reactive contracts receive event logs from various chains, executing Solidity lo [Reactive Education →](../education/introduction/index.md) Begin a Reactive Tech education course. -[FAQ →](./faq.md) Find answers to common questions. - [Debugging →](debugging.md) Debug errors and issues related to Reactive and beyond. [Contacts →](../contacts/index.md) Reach out via socials for technical or trading inquiries.