jesta witness update (2018-Q3)
I wanted to take a while today to update the Steem community on what's been going on over on my side of the blockchain. This post will be part progress report, part transparency report, and a touch of standing on my soap box.
The first thing that makes sense to dive into is an update of what's happened since my last update, which was about 6 weeks ago. It's been an incredibly busy time and I'm very grateful that a number of different projects have been coming to a close within the last week. From a birds eye view, my time has been split between:
- Rolling out my own dedicated/owned infrastructure.
- Negotiating/selling the startup I worked on before joining Steem.
- Wallet tech/development.
- Building up the business and team behind @greymass.
- Exploring the intricacies of the EOS DPoS implementation.
- 2x Steem "emergency" maintenance upgrades.
- A number of discussions around Steem politics.
I completed the paperwork, signed a 3-year lease, installed the hardware, and configured the cabinet to finally own a small portion of infrastructure I provide. It may not look like much yet, but it's progress and I'm pleased with it thus far:
"It's only two servers and a switch, easy!" - @jesta, May 2018
Walking into this undertaking a few months ago I really underestimated the effort it would end up taking to actually rack and configure this small amount of hardware. What I initially thought would just be "a day at the data center" turned into about 6 long days of driving back and forth to complete the various installations. I was an idiot for thinking it'd be so easy.
So why go through all this trouble? This new hardware/cabinet for my Steem witness node means:
- Dedicated internet connection to 13+ Tier-1 internet providers via fiber, guaranteeing 99.99% network uptime and diverse connectivity.
- A physically secured Tier-3 data center with redundant power and an on-site generation capacity of 3x it's usage (guaranteeing 100% power uptime).
- A full rack worth of space, providing plenty of room for additional assets.
The hard part is over at this point luckily, and as of yesterday my primary Steem witness is now running 0.19.10 on one of those two dedicated machines (the bottom one).
Note: In terms of actual Steem block production resources, that single server will be the only actual witness server at this location, since it's better to diversify locations rather than put all the eggs in one basket. The plan is to replicate this setup in another data center, in a different geographical location, to build and own a fully distributed setup. Until that's completed, I'll continue to operate a number of rentals (still dedicated) to act as backups.
Expanding the amount of servers in this cabinet is the next step - with plans on adding another 2-3 larger servers and a handful of low-power consumption devices (NUCs maybe) to act as workers. Currently the entire cabinet exists as a walled garden with no public access - but as the resources are added, the network will be segmented in such a way to allow the private existence of block production resources while also allowing public access to any APIs the new servers host.
Offloading responsibilities and Selling an old business
For the past 2 weeks, out of the blue, @paxmagnus and I have been negotiating the sale of a non-crypto business we built out between 2015/16 together. This business spawned from a hobby project I started back in 2013. It's been a rollercoaster of emotions to say the least, and has involved digging up a lot of old information and hashing out forgotten conversations.
With a set of mixed feelings (including, but not limited to, happy/proud/sad/confused), the paper work is finished and we're in the process of transitioning all of our live services to the new owners. Once this is complete, the management of this non-blockchain business will be off my plate, freeing up a little additional time and money to keep focused on the my efforts into the blockchain space.
With the time I've had available to do application development, I've made some significant strides on a path forward on the foundation of a new wallet platform. I am also no longer alone in this effort, I've been joined by one of @anyx's close friends, dafuga, and have been in talks with a handful of other developers to join the effort in a more official capacity.
Now - this is where this post becomes controversial - since all this progress to date has been made on the EOS version of the wallet tech. At this point we are approximately 60% "feature complete". We are continuing to refine the techniques and technologies we use in creating a modern desktop wallet application.
I know - and before anyone even says it, I understand how many of the hardcore Steem users view this type of work as a threat or some sort of betrayal. I have had more conversations on this topic recently than pretty much anything else - it's a political minefield that I'm willfully walking into because I think I can see a path forward, a "win-win".
I hope I can at least bring some sense of perspective as to why I am making these decisions, as I continue to provide these updates when time permits.
Why not Steem first?
The first topic I wanted to dive into is "why isn't this being built on Steem?" - which is a mix of practicality and timing.
In the practical sense it doesn't make much sense to be build Vessel 2.0 right now. From what I understand, HF20/SMTs is going to fundamentally change Steem all the way down to it's core/UX, which will create a brand new set of needs/wants from the you, the community. These unknowns could invalidate much of the Steem-specific implementation at this point, and I fear wasting time writing something that'll just need to be replaced in a few months.
What makes the most sense to me is to start creating this new version of Vessel as soon as there's something tangible to develop against. Going from a triple token wallet (SBD/SP/STEEM) to a variable currency wallet (unlimited SMTs + 3) is a tall order, and one that I have serious concerns about with the way Vessel currently works
At this point I am convinced that this is a fundamental enough change to warrant the complete rewrite of the code. There are an incredible amount of unknowns and the flexibility a fresh app will provide will prove crucial in rapidly adopting this new tech.
Now it's just a matter of waiting for these features to even be testable.
In the mean time, I've adopted the same technology that I planned on using for Vessel 2.0, to create Anchor 1.0, which will directly benefit in Vessel 2.0's construction.
The names, Anchor vs Vessel.
In my last post I went into detail about how I wanted to retire the name Vessel and replace it with Anchor. As time has progressed, and the more I've thought about it, I've come to believe having those two independent names is an important distinction to have.
So as of today, the naming of these two projects will be as such:
- Vessel - a Steem desktop wallet
- Anchor - an EOS desktop wallet
They both play off each other rather nicely I think!
Vessel 2.0 and Anchor 1.0 will both be based on the same foundation of code and essentially end up as siblings - sharing the same DNA but with their own distinct goals. Vessel 1.0 (current day version) is the parent and the inspiration for both of these new products.
One other important distinction I'd like to make is that Vessel is a jesta - the steem witness project, where as Anchor is a greymass - the eos witness project (which I am a part of). This may change in the future, but that's the current division of responsibility in these projects. Luckily both my sole efforts, as well as the Greymass team efforts, are all open source and can be shared between these projects, learning from one another.
What sort of wallet advances have been made?
The majority of the actual foundation code designed over the last few months is meant to be explored in a blockchain-agnostic ammer, with very little being specific to one platform or another. Many of the components themselves still need further abstraction, but things are starting to shape up.
To give you a sense of some of the advances made while working on Anchor, here's a brief list:
- Wallet Switching: Instead of loading trying to look at all accounts at the same time, this new wallet focuses on one account at a time, with a quick switcher to allow easily swapping to a number of different accounts.
- Wallet Modes: Each individual wallet within the application can exist in one of 3 modes, "Hot" (meaning online, like current day Vessel), "Cold" (an offline cold storage device for signing transactions), and "Watch" (a wallet that can create unsigned transactions, and broadcast signed transactions).
- Safer Storage: Improvements to how private keys are encrypted and stored locally, and how keys while in-memory are handled.
- Easier on-boarding: A nicer "welcome" experience for new users that guides them through setting up one of the various wallet modes.
- Support for Multiple Tokens: A restructured accounts/balances system that allows for an unlimited number of additional tokens.
- Locked/Unlocked: Instead of entering a password on every transaction, the wallet itself now exists in a Locked/Unlocked state. Unlocking requires a password, and while unlocked, transactions can be performed without a password prompt.
- Localization: an implementation of i18next combined with the crowdin platform to open source the translation of the application.
Our next steps include creating:
- A robust key/permissions management system for each account
- An account creation system that encourages creation of accounts for friends.
- A secure custom URI scheme handler.
I hope by listing the kinds of progress being made - those even on a non-technical level can begin to understand how much of this work doesn't care which blockchain it's for. When you boil it down, the interface into a specific blockchain is a relatively small portion of what it actually takes to build an application like a wallet.
Greymass - the new business
The final portion of my effort over the past few months has been building out Greymass, the business @anyx and I are starting, which is also an EOS Block Producer. We have started down the path of incorporation, have started recruiting additional members to the team, and are on our way to creating an business entity with the advancement of DLT in mind.
I bring this up because it has also consumed a portion of my time. I am not here to speak on behalf of the business, but more to disclose it in an act of transparency.
The one thing I will say about Greymass though is that we are building it with a longer term vision in mind. EOS is the businesses primary focus right now and will be for the immediate future, but that doesn't mean it will be forever. The speed at which crypto moves and changes is both unbelievable and unpredictable.
Both @anyx and I have a deep passion for this entire new industry of technology and have a desire to impact not only one blockchains success - but many.
jesta - the steem witness
To wrap it up - I figured I'd bring it all back down to what this is about, my candidacy as a witness on the Steem blockchain.
The range of conversations I've had on the topic of "being a witness" over the past months have yielded a vast range of opinions. It's an incredibly nuanced topic and you'll be hard to find someone that shares exactly your same opinion on what a witness should be/do.
These conversations have elements of pride, justice, logic, dedication, jealousy, admiration, and many more - all in a mix of perspective that really comes off unique to that person. There are no rules and we're all making this up as we go along. We all have one tool though - our votes, and every one of us should vote based off that unique perspective.
So I'd ask this of anyone voting for me: if you don't approve my recent activity/goals, or even if you can find 30 people who are better Witnesses for Steem than me, please don't vote for me or vote for someone else instead. The last thing I want is to get into philosophical arguments and end up making enemies.
As the time of this writing, I am not planning to retire my witness or to "step down" (as quite a few have suggested). Those options to me equate to quitting Steem completely, which is not something I'm looking to do. It's my hope by providing insights into these matters that people will see my perspective on these things and continue to support my efforts. I owe where I am today in part to Steem, and I owe it to all of you, the voters, to better explain these situations and decisions I make.
I'll gladly accept a lower ranked position if the community decides it to be, but have no desire to quit Steem or quit working on Steem related projects moving into the future. Steem still has a bright future (as do many other blockchains) and I plan on contributing however I can, in whatever capacity I can muster.