Building the Hive Smart Chain Project from HyperLedger codebase Rather Than From an Ethereum Codebase.

in #hive-dev3 years ago

Hive Smart Chain Inverted.png

After what turns out being well over a month of research into this topic and having tried a number of blockchain solutions locally in an attempt to discover the best potential donor of code to enable cross chain communication and seamless secure smart contract execution working it's been decided to move away from the previously used "Ethereum-go" codebase and instead replace it with a much faster, less bloated blockchain codebase based on the "HyperLedgers Burrow" project.

After stumbling across HyperLedgers and their quite extensive library of blockchain codebases it was discovered that this software and code is used by massive international corporations the like of IBM, Amazon, Visa and "FinTech" giant SWIFT to do their cross bank capital transfers. Certainly going to side on the usage of this blockchain technology by corporate giants like the ones mentioned above is a healthy indicator the HyperLedgers codebase is quite well made & solid.

Building from something that has proven real world success is fair more likely to succeed than taking an existing crypto currency codebase and stripping out parts while rebranding.. Starting as simple as possible and working your way up is a far better technique than starting with something that already works then modifying it to your liking and praying it still works afterwards.

In addition to all the postives surrounding this switch ot the Hyperledgers codebase as a starting point one huge part of this is going to be the ability to match and perhaps even surpass the 3 second block time HIVE adheres to. In testing I've seen sub-second block times on the HSC network which in time may be viable to help speed up things such as token deposits or using HSC as a middleware to HIVE for something like real time gaming where 3 seconds is a long wait for some.

Starting From A Lean and Mean Codebase

image.png

While the initial idea of the HSC project was to do a clone of Ethereum and rebrand it all internally using custom written bridge contracts to facilitate the HIVE < - > HSC HIVE transfers the amount of work it was going to take to gut the ethereum-go project and have HIVE run as it's native token ended up being extensive and while a version of ethereum-go did get built locally that used HIVE as it's native token upon closer look into the Hyperledger applications made me realize it'd be far easier to start from a proven blockchain technology that doesn't have a native base token to begin with.

Although the HyperLedgers code doesn't natively support a lot of the "Ethereum Request for Comments" (ERC) type rulesets we've seen that it's entirely possible to implement support for such things, ultimately opening the door for the HSC project side chain to be able to accept and create it's own versions of ERC20 (The code standard for tokens), ERC-721 (The code standard for NFTs) or any other standard currently implemented on Ethereum / any other smart contract blockchain.

A list of Ethereum's request for comment can be seen here:
https://eips.ethereum.org/erc

While out of the box HyperLedgers Burrow operates as a private, non-inclusive Byzantine Fault Tolerance style model for sidechain security and decentralization the plan is to also add additional checks to this and add a Proof of Stake element to it as well, insuring that any account wishing to come and produce blocks for hte side chain have atleast the minimum amount of HIVE in their account to facilitate their client producing blocks. Given that Byzantine Fault Tolerance model of blockchain security relies on 2/3rds or greater of the clients connected to the chain to agree upon the chain state before another block can be added the hybrid BFT/PoS model should work well!

Cross Platform Executable Compiling and OS Support


image.png

The pursuit of building the Hive Smart Chain out of a language that easily compiles on all the popular operating systems such as Windows, Mac and the various Linux/Unix flavours was an absolute must for the HSC project.

Being inclusive to all operating systems not only helps open the door for greater decentralization of the side chain but also ensures that no users are penalized or unable to be involved with the running of the side chain due to their preference in operating system. As we get closer to a testnet getting started and side chain launch binaries needed to run the nodes will be made available as well as the source code and well written instructions on how to compile yourself.

I generally recommend not running executables off the internet and instead auditing and compiling the code yourself so you know what it is going to do. Certainly realize not everyone has the ability or want to do their own compiling so because of this the HSC project will supply the programs and instructions needed to get users from varying technical backgrounds involved.

Building Cross Blockchain Communications & Bridges


image.png

While still a bit early to start testing to start tossing you guys some real world tech demos showing cross chain communications and token bridging (Atomic or Plasma type swaps) I've approached a number of the side chains currently under development and asked if they're interested in creating bridging interfaces to facilitate transfers of tokens or what have you between the various side chains.

In addition to this alos started contacting a small group of other smart chain compatible blockchains and asking them if their interested in partnerships as well. The reasoning behind this is that the more inter chain communication and token bridging we have the better off the whole community and the communities linking with it are likely to perform.

No longer will it be us in our own little corner of crypto land once this side chain is running.. Nothing will be stopping us from offering other blockchains plugins and interfaces to allow for them to easily turn their tokens into HSC compatible tokens or have Xcoin < - > HIVE swapping occur seamlessly.

Development in Tandem with the Hive.Loans Project


image.png

The Hive Smart Chain idea was born out of trying to solve the issue of making the lending contracts soon offered on Hive.Loans to be run in such a way that even in event of it's server being shut off or lost to a fire that the contracts and user funding would always be safe.

The decentralization and management of lending on Hive.Loans will run for the most part on the HSC in order to achieve this. Initially my thought was to get Hive.Loans built without the smart contract capability, then work on the HSC and later convert Hive.Loans over to the new HSC utilizing version but after realizing how dumb that was, it was decided I'd work on both of them in tandem, given that the HSC is a necessary part of the whole Hive.Loans project.

The Hive Smart Chain will be built to support the Hive.Loans project and it's decentralization and security. While the HSC is still very much not ready for public testing and whatnot it's incredibly likely that within the next few weeks we see a testnet set up and have users able to be included in the side chain as testing nodes.

Code Auditing, Testing and Community Assistance

image.png

This morning I had a well known HIVE developer giving me shit over code he was attempting to audit from my git repository. As it sits currently I don't have any of the codebase for this or Hive.Loans to the point where I'm requesting the code to be audited although perhaps by the end of today I'll have made a list and published it here on HIVE to guide potential help from developers in the right direction.

Highly appreciate other developers willing to come in and check out the codebase but as it sits please wait for me to get things lined up better and the codebase of this and my other projects ear-marked and listed publicly so people aren't wasting their time auditing code that will never even be included in the production release.

Right now as it sits Proposal #164 which seeks funding of the development of HSC and it's supporting libraries is roughly 58.869% of where it needs to be in order to receive funding. Due to my own internal need of this functionality to run parts of Hive.Loans off of I'm working on the HSC project regardless of it being funded by the community or not. Hoping that the proposal is accepted here in the next week so I can begin paying the other developers who would like to get involved something for their time and efforts although will continue to work solo and unpaid in regards to development of the HSC.

The Hive.Loans proposal is paying me a small amount each day thankfully so I'm merely paying my development costs out of that at the moment, however it's not enough to bring on other developers.

I'm eternally grateful at peple offering their help on this project. Thank you to everyone who is involved or would get involved in the future. For folks looking to get into the server chat room where the majority of the project running are held come check out Hive.Blue HSC Hive Smart Chain room.

Public Testing, Block Producing and HSC Future Plans

While not publicly available for testing yet, as soon as I've got a properly BFT/PoS version of this running that I'm comfortable with showing and getting a decentralized testnet running. Ideally this would start becoming a reality in a few weeks in order to give the community and myself ample time to test the Hive.Loans project and its pieces running atop HSC.

I'll be the first one to admit that all of this is highly ambitious almost to the point of being overwhelming but thankfully the community has been very supportive of the whole thing and my fellow developers quite eager to get things operating as they should be, which I'm eternally grateful for. A massive undertaking for myself if it was a solo effort but thankfully the community seems to "have my back" as you'd call it and with that knowledge I'm confident that we as a community will have a blazing fast, secure and universally capable side chain operating well here on HIVE quite quickly. I'll make a post later today with all the project repositories I'm actively working on and perhaps have a list made available for what all needs built and let other developers attack those solutions independently of my own coding work in order to take advantage of the skills that users have expressed publicly on applying to creating this in a timely and safe fashion.

Thanks for reading, supporting, commenting and helping me make HIVE a better place!


image.png

Vote KLYE for Witness, Every Single Vote Helps, Thanks for the Support!

Need to get in Contact with KLYE?
Join the Official #KLYE Discord Server Today!


image.png
Looking for an Affordable, Secure & Reliable Server Host for Your Witness Server or Other Web Related Projects? Check out Privex.io!

Sort:  

Got a set of vectors on Figma so you can have high-resolution icons. (I basically got the Hive branding assets and changed the logo color to #1CECC8, but I'm not sure if that's the hex you got inverting the colors on MSPaint)

https://www.figma.com/file/ZD8SBrS1PLPSmtU5tJU68j/HSC-Brand

It's certainly Eye cataching! Apreciarte the help.

I'll see iF I can add the ETH logo into the diamond part here evenrtually

Updated it on Figma with the Ethereum logo integrated. (feel free to change the main color and shadows)

image.png

P.S. I left the previous logo on the side as a reference (and backup if necessary).

Excellent. That looks slick!

I'm stealing your illustration and using it for commercial means. :D

The joke is on you, as I basically stole those from Hive and Ethereum brand assets too. 😝

I saw some of your forks on Github and I was almost sure you would go the Startport/Ehtermint route. 😆

Essentially am, just a striped down version in a sense as it's the code for those two but without the bloat.

Nice! Not sure about GoLang, but I'm glad to help with the Javascript codebase of the project. ^^

Also, I'm completely clueless on how to create an account on Hive.Blue's chat. 😅

I can send you an invte if you DM me an email on disvord

Didn't see that liquid bubble at first. Approved.

The color looks much better!!

Simply inverted all the colours via MS-Paint... :D

I think the neon ice blue green colour is neat though. Will likely be the color schema I use to differentiate HSC stuff from HIVE or HBD.

I got my hive.loans test node site up for future demo purposes, guess I still need to set up the ports w/ sequelize-cli db.
Screenshot 2021-03-18 at 6.32.46 PM.png

nodemon app.js

[nodemon] 2.0.7
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): .
[nodemon] watching extensions: js,mjs,json
[nodemon] starting node app.js
[18:31:31] Initializing ...
[18:31:31] Migrating DB...
[18:31:31] Hive.Loans v1.0.0 Started on Port: 3000
(node:7010) UnhandledPromiseRejectionWarning: Error: Command failed: npx sequelize-cli db:create || npx sequelize-cli db:migrate
npx: installed 81 in 8.684s
ERROR: connect ECONNREFUSED 127.0.0.1:6666
npx: installed 81 in 3.467s
ERROR: connect ECONNREFUSED 127.0.0.1:6666

Yep! that is exactly what it's missing!

If you give me a few minutes I'll push what I have here locally.

npm install sequelize-cli --save

That is likely the site trying to set up the database on first run after detecting it wasn't able to get onto it's database. The DB I use is MariaDB with Sequelize ORM.

Highly suggest getting something like HeidiSQL to monitor your local dtabases and make it easier to do admin work on it. :)

Thanks, yeah I will try it.

Ohh. Yeah make sure your MariaDB is running on port 6666 too. That is what that error looks like.. Naturally it runs on port 20K something so you have to change that in it's config or as a flag at run-time.

How the hell in the heavens does one speak your name?

Like the word "lie" but with a sharp K sound in front of it. :)

Now I can properly think your name loud out in my mind. Appreciated.

Lol I was reading "Kyle" for years :)))

My dyslexia intensified. All this time I was reading Kyle in my head. 😅