0chain / 0chain/zboxcli

Optimization proposal from Sculptex

Open
#673 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
28
Forks
23
PR merge metrics
No merged PRs in 30d

Description

https://discord.com/channels/992566329632641056/1045060754103078933/1373235805459316816

Quotes from the discord message from Sculptex:
I have an app that uses the cli tools on the back end to post transactions to the Blockchain (Solana + Züs). Now the miner Active Set is much smaller, just a small number of inactive miners has a more dramatic effect on tx times.

My understanding is that each tx is sent to a random subset of miners. If inoperative miners are included in this subset, then there is a 30s timeout experienced. This can clearly and consistently be seen, the times for cli tx commands to complete consistently falls in the range around 5-7 seconds, 35-37 seconds or even 65-67 seconds. This shows instances of timeouts. The 5+ odd seconds is consistent with a minimum number of blocks passing to ensure finalization which is fine, it's the clear stepping of additional 30 seconds that is a problem.

The simple fix is to reduce the default timeout for miner response in the order of a few seconds max, this way the tx will be retried much quicker with a different set of miners.

This will result in a much more consistent UX.

A different approach that I have had success with is to curate the Active Set list of miners to only include ones that are recently active, so instead of using mainnet/dns/network that returns the entire Active Set, you would have a service running that excludes any miners that are currently inactive, such as active/dns/network.

![Image](https://github.com/user-attachments/assets/b3aeefcd-fbfd-4863-898f-c3235d61e9b7)

![Image](https://github.com/user-attachments/assets/91b80ba5-5095-4fef-8acc-97b739120ca2)

Contributor guide

No contributing guide indexed for this repository

Research direction

Look at the CLI tool's transaction sending logic, likely in the GoSDK, to find where miner subsets are selected and timeouts are set. The issue mentions reducing the default timeout for miner response and possibly curating the Active Set. Start by examining network call functions and timeout configurations. Testing changes will require understanding the transaction flow and possibly setting up a test environment to simulate miner responses.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, shell
Domain
backend, cli, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.