Symbiont{s} | Steem DAO | Wallet Development Update #1

in #witness-category9 days ago (edited)


https://ecosynthesizer.com


Thriving Through a Symbiotic Equilibrium
Steem DAO | Wallet Development Update #1

Greetings!

This is a first update related to the wallet upgrade proposal.

The Steem Proposal System (SPS) was introduced in Hard Fork 21 as a strategic measure to distribute development responsibilities more evenly across the ecosystem. Its introduction followed a prior fork that had substantially reduced witness compensation and was a response to the resulting operational strain on witnesses. The SPS was implemented to allow Steem users to formally submit proposals for initiatives or development work they intend to execute in exchange for funding, thereby fostering broader community engagement in the blockchain’s evolution.

Voting on proposals follows a stake-weighted model similar to that used in witness voting. However, in contrast to the fixed voting limit in witness selection, users can vote for as many proposals as they choose. This open and inclusive system gives the community a direct voice in determining development priorities and the allocation of funding.

Initial funding for the Steem Proposal System (SPS) was provided by Steemit Inc., which converted 200,000 STEEM into SBD to bootstrap the system. While this was sufficient to initiate early operations, it was not sustainable as a long-term funding model. The idea of allocating a portion of the blockchain’s inflation to support proposals was proposed and discussed among witnesses during the planning phase. As a result, Steem witnesses played a key role in implementing the SPS through Hardfork 21, which introduced a mechanism that redirects 10 percent of the blockchain's inflation, taken from the overall rewards pool, to fund community proposals submitted through the SteemDAO.

To facilitate interaction with the system, Steemit Inc. introduced a basic interface at https://steemitwallet.com/proposals, which served as a minimum viable product. This page was intended to be a starting point that community developers could expand over time. Unfortunately, despite being introduced more than six years ago, the interface received little to no enhancement, limiting its functionality and usability for end users.

That is now beginning to change. We have recently undertaken a focused effort to modernize and revitalize this long-overlooked component of the Steem ecosystem. Our goal is to deliver essential improvements to the user experience, restore relevance to the proposal interface, and fully unlock its potential as a core tool for community-driven development on Steem.

Where to test the Changes?

Community members can test all related improvements at:

List of changes


Development Progress Overview

🟩 Green: Pre-existing implementations

🔵 Blue: Newly added implementations

🟥 Red: Planned or pending implementations

🟪 Purple: Community-suggested implementations

UI changes to the proposal page

Although this change was not part of the original roadmap, we made the decision to move forward with it to provide a significantly improved user experience. Based on community feedback, we determined that enabling users to create proposals without first improving the usability and design of the proposals page would be insufficient.

Original UI

Users should now encounter a more streamlined and intuitive interface when navigating the proposals page. Significant effort was made to establish a consistent visual structure that facilitates faster recognition and clearer understanding of each proposal’s purpose and current status.

New UI

Due to technical limitations, certain aspects of the page required custom solutions designed to deliver tangible benefits without introducing additional overhead for wallet operators. For example, there is currently no native mechanism to identify which proposals are actively being funded. One potential solution involved performing real-time calculations on each page load to determine funding status. However, this approach was considered suboptimal with respect to performance and scalability.


Phone Version

Instead, we adopted a more deterministic approach by hard-coding the ID of the return proposal and programmatically flagging any proposal that receives greater support. While we typically prefer solutions that minimize ongoing developer intervention, the return proposal is intended to remain active for an extended duration, making this method both practical and low-maintenance. Going forward, ensuring accurate functionality will only require updating the return proposal ID when necessary.

Exploring an existing issue

Not started proposals

Another issue we sought to address was previously raised by witness @justyy regarding non-started proposals, which currently display a support level of zero regardless of actual backing. At present, there is no direct method to retrieve the accurate support value. We explored several potential solutions, including techniques such as lazy loading and aggressive preloading on hover, to improve perceived performance. However, we ultimately chose not to implement either method due to technical constraints in retrieving the full list of voters, which could significantly impact page performance. Although these implementations might work in theory given the relatively low number of proposals and voters, it is more prudent to prioritize stability and predictability. It is essential to ensure that resolving minor issues does not introduce new or more severe problems. Solutions must be implemented with care to effectively address the original concern without compromising the user experience or the overall integrity of the system. Users who wish to view the actual support level and voter list for a non-started proposal can click on the "0" value, which will redirect them to a detailed table displaying both the total support and the corresponding list of voters.

The list of voters

As outlined above, users who wish to view the support level for proposals that have not yet commenced can click on the "0" value. This action will display detailed information, including the actual support for the proposal and a comprehensive list of all voters. Additional data is also presented, such as the Steem Power held by each voter, their proxied voting power, and the overall influence of each account. A search bar has also been added to help users quickly locate specific accounts, and the table now includes functionality to sort and rank entries as needed.

To enhance clarity and improve the user experience, we have introduced color-coded indicators. These visual elements were chosen for their ability to help users interpret key information at a glance, without needing to read through all the textual content. This design decision supports faster comprehension and contributes to a more intuitive interface.

Light green is used to indicate accounts that have designated another account as their voting proxy, and whose influence is being counted because their proxy has voted for the proposal. In contrast, light red identifies accounts that have also set a voting proxy, but whose influence is not being counted since their proxy has not voted for the proposal.


Phone Version

Proposal removal

Users can now remove their own proposals with just two clicks. The "Remove" button is only visible when the currently logged-in account matches the creator of the proposal. However, during testing, an incident occurred where a proposal was accidentally removed due to an unintended click. This presents a significant risk, particularly for proposals that have already received substantial support, as regaining the same level of backing can be difficult or even impossible due to factors such as user engagement and overall visibility.

To address this issue, we have implemented an additional security mechanism to ensure that users are fully aware of their actions. This safeguard helps prevent accidental removals caused by muscle memory or confusion with similar interface elements. Users are now required to re-enter their proposal ID before they can proceed with the removal.


Phone Version

Proposal creation

Creating a proposal is now a straightforward process. We have taken care to keep the process as simple and intuitive as possible. During testing, we observed that some users were unclear about the concept of permalinks, so we implemented a system that allows users to simply paste a link, after which several related fields are automatically populated.


Phone Version

Localization

As of now, localization is not within the scope of our ongoing development efforts. Although we previously considered a community-driven initiative, it did not materialize due to numerous factors. However, we are confident that localization will be addressed once our current priorities are completed.

What is next?

An FAQ section has already been prepared to provide detailed information related to the SteemDAO. While it could have been included in the current release, we are presently awaiting feedback from several community members with varying levels of technical expertise. This step is intended to ensure that the content is both accurate and accessible to a broad range of users. The section will be included and made available in the next update.

As with any development effort that prioritizes a high level of refinement, trade-offs are inevitable. For a team committed to precision and polish, this often means that some critical features remain in the backlog while enhancements to existing components are being finalized. Although there are still a few validations and minor improvements we intend to implement, we have opted to categorize them as non-critical refinements. These will be bundled and addressed in a future development cycle.

At this stage, we are intentionally refraining from announcing specific features planned for the next update. This decision is driven by a desire to avoid overpromising or creating expectations around features that may ultimately require additional time and testing. Broadly speaking, our development priorities remain focused on features that are either time-sensitive, widely requested, or provide meaningful quality-of-life improvements for the average Steem user.

Can I still suggest ideas and features?

Users are encouraged to freely share their thoughts and ideas with us. As developers and product owners, we often drift away from what regular users truly need and may unintentionally introduce unnecessary complexity. If you have any suggestions, whether related to our current work or to future improvements, please do not hesitate to reach out. Your feedback is highly valuable and can significantly contribute to the quality and direction of our development efforts.

That being said, we have already approved a few smaller features that were requested by the community, and we are open to implementing more if we determine that they are necessary. While suggestions for new features and change requests are welcome, we cannot guarantee that all submissions will be added to the development roadmap.

// Human-written, AI-enhanced

Thank you for your continued support,

The Symbionts Team,

Contact us,

Sort:  

"account recovery" (see red tasks) is mentioned twice are these two different types/levels of a count recovery?

Plenty, to look forward to, I hope the average Steemian will take the time to discover, note the possibilities and try out the new wallet options.

Taking delegations back I didn't notice.

♥️🍀

Hi @wakeupkitty,

Good catch. We will make sure to update it soon.

Thank you for your feedback.

This is all looking very impressive.

Improving the DAO Proposals section will be very useful.

One very small point - on the CREATION PROPOSAL FEE box would it be useful to specify that it is SBD ?

Hi, @pennsif,

Yes, we have ensured that the SBD indicator has been added.

Thank you for your feedback.

I look forward to seeing the new changes in Steemit Wallet.

What is the timeline for the changes to become live?

Hi, @pennsif,

We are currently finalizing several changes based on community feedback. Once completed, the code will be published on GitHub. However, we do not expect these changes to be deployed as quickly as those applied to the condenser powering Steemit.com. This is primarily because, as previously mentioned, the review process for wallet-related changes requires significantly more caution, given that the wallet involves critical operations beyond those permitted by the posting key.

Thank you for the extra information.

I am really excited to see the updated interface of the steemitwallet. You are doing a great work. This is really helpful that we will be bale to use account recover change option directly through steemitwallet.

Instead, we adopted a more deterministic approach by hard-coding the ID of the return proposal and programmatically flagging any proposal that receives greater support.

Wouldn't it be better to do it the way the chain itself does it, by using the payouts and the available budget? There's nothing magical about "the" return proposal. Alternatively, if you do want to flag return proposals, couldn't you just detect that they're paying to @steem.dao rather than hardcoding a specific proposal number?

Hi, @danmaruschak,

The most appropriate long-term solution is to implement a permanent chain-level pivot that stakeholders can vote on. Unlike ordinary proposals, this pivot must not be subject to removal by individual users. Instead, it should be embedded at the protocol level to ensure continuity and safeguard against governance manipulation.

Since such a native mechanism is not currently available, the community has reached consensus to designate a specific proposal to serve as the de facto return proposal for the next decade. To enhance resilience, a secondary backup proposal has also been created. It will serve as a contingency in the event that the primary proposal's owner becomes compromised or acts counter to stakeholder interests. This interim arrangement provides a reliable and transparent fallback, maintaining operational safety until a native, immutable return pivot can be formally integrated into the protocol.

Refund proposals (also known as return proposals) are automatically flagged with the refund flag when the account @steem.dao is set as the beneficiary, just as you suggested. The hardcoded aspect lies in identifying which proposal is currently being funded. While we could have opted for a dynamic calculation approach instead of hard-coding the proposal ID, we ultimately determined that the performance overhead made it an unattractive solution.

However, this is not a perfect solution. For example, a proposal that has not yet started but ranks above the return proposal in terms of votes may be incorrectly flagged as funded. Another potential issue occurs when a large number of proposals are ranked above the return proposal. Some of these may not receive funding due to budget constraints, yet they will still be flagged as funded simply because they appear above the return proposal. As in most cases where no native solution exists, it ultimately comes down to weighing the advantages against the disadvantages.

Thank you,

the performance overhead made it an unattractive solution.

I'm not really following what makes this a performance-constrained problem. Don't you already have an ordered list of proposals in terms of voting support, whether or not each one is past its start date and before its end date, what its payment is, and what the total budget is? I assume you'd need that info just for the basic display. Can't you then just iterate through that short list until you figure out which one exhausts the budget (usually a return proposal)?

Hi, @danmaruschak,

If the calculation is performed client-side, we must ensure that the page is not slow and loads within an acceptable timeframe across all types of devices. On the other hand, performing the calculation server-side also presents scalability challenges, as having thousands of users accessing the proposals page simultaneously would place significant load on the server infrastructure.

The calculation logic itself is relatively straightforward. Each proposal whose daily payout is less than or equal to the available daily DAO budget is marked as funded. As proposals are processed in descending order of vote ranking, the cumulative sum of daily payouts is tracked. Once this cumulative total exceeds the DAO's daily budget, all remaining proposals are no longer flagged as funded.

We will proceed with testing this approach further, and if any noticeable decline in user experience is observed, it should be relatively easy to revert. Given the points outlined in the post, this remains our preferred approach provided it performs well in practice, as we generally dislike implementations that require additional maintenance.

Thank you,

Good work. Thank you. !thumbup

It is good to see that steemit.com is not being left behind and its wallet is being expanded.
Open source in an easily accessible way is important to many. A few bigger buttons in sight would also help a lot.

Is the SBD (not in savings) still unsecured and in case of a hack immediately transferable as was the case with multiple accounts in 2024.

Will/can a powerdown be shown by steemit.com as a warning?

A good weekend!

🍀♥️

IMG_20250430_023633_067.jpg

Hi @steemcurator08,

  1. SBD in savings is subject to a 3-day withdrawal rule and cannot be transferred immediately.

  2. Implementing a warning indicator during an active power down is straightforward from a development perspective. While the status is currently displayed on the wallet, its visibility may indeed not be prominent enough to effectively capture user attention.

Thank you for stopping by.

I have a suggestion regarding the rewards section. It only displays the author reward and curation reward. It should also show the beneficiary rewards.

Hi, @mohammadfaisal,

Thank you for your suggestion,

Upvoted! Thank you for supporting witness @jswit.

Hello @symbionts! You are Awe-inspiring!


command: !thumbup is powered by witness @justyy and his contributions are: https://steemyy.com
More commands are coming!