AppBase: The next step forward for the Steem blockchain (let the testing begin)

in steem •  9 months ago

Today we have some exciting news to share: AppBase is ready, and we would like everyone to help with testing. Although, please note that third-party developers may need to make some minor changes to adapt to the new platform.

AppBase release candidate is now ready

Back in August we shared with you news of some of the exciting updates being made to the Steem blockchain. One of those updates is AppBase, which will create distinct “modules” that will dramatically improve Steem’s ability to scale.

AppBase is the first step in creating a multi-chain FABRIC. AppBase enables many components of the Steem blockchain to become modular by creating additional non-consensus blockchains as dedicated plugins. These plugins can be updated much more rapidly because they do not require replaying the entire blockchain.

We are finally ready to test AppBase on a large scale!

If you’re just a regular steemit.com user, you can help too. Head on over to steemitstage.com and use the site like you normally would.

Our staging environment includes the same security measures taken for steemit.com, and is considered pre-production. It's designed to be as close to the 'real' steemit.com as possible, in order to fully vet new code before it makes it to steemit.com. If you're still worried about using your keys, you're welcome to just use your posting key. Even if you don't login at all, just browsing the site and providing feedback to us is still useful.

For Developers

If you run or maintain a Steem service, there are a couple of steps you will need to take to ensure your service will continue to operate as expected. Details are in the sections below.

steemd node changes

If you run a steemd node, you can check out the tag v0.19.4rc1 from GitHub or Docker Hub.

API changes

We restructured our APIs to allow greater flexibility for future upgrading and maintaining. The APIs now take in a single object as an argument and return a single object as a return type. All the existing APIs have been updated to match this standard.

Because we no longer need to stick to C++ style parameter semantics, we can use more varied default argument types as well as variadic parameters. We can also extend the functionality of a call without impacting the existing apps by extending the returned object.

The database_api has undergone significant changes to allow the querying of all consensus objects with any ordering that steemd uses already. This will provide more flexibility for services to find the objects they need.

New condenser_api

To help with this transition, we created condenser_api, which contains all of the API methods that currently exist and uses the existing argument formatting. The easiest way to get your app to work with Appbase is to change the api to condenser_api.

APIs must be called by name

If you are used to calling an API using the API id, that method of invocation is no longer supported. All the APIs must now be called by name.

Removed login_api

The login_api was designed as a way to map the API names to numeric ids. Because the APIs are no longer called via id, there is now no need for the login_api, and so it has been removed.

API methods list

If you call jsonrpc.get_methods, a list of all available API methods will be returned.

Argument and return object prototypes

If you call jsonrpc.get_signature passing an API method name, it will return the argument and return the object prototypes.

For example,

{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"database_api.get_active_witnessess"}, "id":1}

returns
{"jsonrpc":"2.0","result":{"args":{},"ret":{"witnesses":[]}},"id":1}

{} is the void type argument and it returns a list in the witnesses field.

Using condenser_api

All calls in condenser_api will return [] as the argument, as the array argument passing is opaque and implemented in the API calls themselves. They follow the current argument formatting. Existing apps should only need to skip using login_api and send all of their calls to condenser_api without any other changes required to use Appbase.

For example, calling get_dynamic_global_properties with condenser_api vs database_api:

{"jsonrpc":"2.0", "method":"condenser_api.get_dynamic_global_properties", "params":[], "id":1}

{"jsonrpc":"2.0", "method":"database_api.get_dynamic_global_properties", "id":1}

Because the method has no arguments, the params field can be omitted when not using condenser_api. However, it can optionally be included as the void type (e.g. "params":{}) but it is not required.

Streamlined syntax

You might have noticed that the previous examples used a different format to call the API. Previously, there was an outdated call syntax that looked like this:

{"jsonrpc":"2.0", "id":0, "method":"call", "params":["api","function",[ARGS]]}.

However, we now support a more streamlined call syntax:

{"jsonrpc":"2.0", "id":0, "method":"api.function", "params":[ARGS]}

Both formats work, but with the new format being preferred for readability.

Enhanced JSON-RPC compliance

Some other changes were made to make steemd more compliant with the widely-used JSON-RPC specification. This is still new. Please help us test our json-rpc implementation to ensure that it is spec compliant.

Backward compatibility

Our reverse proxy service, jussi, handles the method translation. This means that even after deploying Appbase to our production environment, the old API calls should still work.

Future updates required

Note that the new APIs introduced in this release are still Work in Progress. There are a number of serialization changes that are still being made to them and hence they are in various states of completeness. We will post again in the near future explaining the nature of those changes. Feel free to play around with those APIs, but know that they will be changed. Once we finalize those APIs, we will deprecate condenser_api and begin migration to the new APIs.

Config file changes

The logging config has always been a sore spot in the config file because of the number of options available. It was so complex that it required a different parser. We have changed to using a json format, which allows us to use only one parser. The default logging config is the following:

# Console appender definition json: {"appender", "stream"}
log-console-appender = {"appender":"stderr","stream":"std_error"}

# File appender definition json:  {"appender", "file"}
log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"}

# Logger definition json: {"name", "level", "appender"}
log-logger = {"name":"default","level":"debug","appender":"stderr"}
log-logger = {"name":"p2p","level":"debug","appender":"p2p"}

Plugins

Plugins are enabled via the plugin option. There is no more public-api option and all the APIs are now enabled via plugin as well.

Most config options are now namespaced by the plugin they belong to. Config options that were not namespaced are still supported but will now log a deprecation warning when used. contrib/config-for-docker.ini and contrib/fullnode.config.ini are example configs that are used in the Docker images. You can use these as example config files. As usual, we strongly recommend using the Docker images to deploy your node.

Conclusions

These changes have been in the works for many months, and represent a major step forward for Steem. AppBase provides a robust foundation for meeting all of our future scaling needs, and will allow us to grow the platform while at the same time managing the resource requirements for third-party application developers, witnesses, and exchanges to grow along with it.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

This is such a monumental step forward. This will hopefully lead to much less resource demand on nodes and witnesses in the future.

I will work on doing some testing and make a detailed post for the developer community.

·

Awesome! I'm looking forward to the new Steem API wrappers. I'm far from being fluent in all of this dev talk, but I sure enjoy making some Steemit bots. :)

·
·

@cryptsharon - You have an interesting profile, although I don't see anything "crypto" ...
Your reputation is high, but, not showing up in earnings or SP - I wonder why - as you seem to have good materials.
All the best!

·
·
·

Henlo c:

The Crypto part was a joke because people kept inviting me to pump & dump chats. I got sick of it and noticed that 99% of the groups' names started with Crypto. Crypto Whale, Crypto Pros, Crypto Traders, Crypto Professor, etc. I was choosing my new username and went with CryptoSharon.

I also invest often in cryptocurrencies and am in love with cryptography.

My rep is high because I get voted on by high-rep people and because I recycle my money on promotion bots. :)

And thank you <3 I'm glad you like them! You're welcome anytime to read my stories and leave me a comment telling me what you thought about what you read.

Cheers!

·

@netuoso I don't fully understand this. Are there any other types of nodes aside from the witness nodes that make up the Steem network?

How many nodes are there? I'm kind of lost here.

I hope you can clarify or any links detailing this matter would be much appreciated. Thanx!

Also I have a project proposal on how to decentralize sex.

·
·

I made a couple of posts a few months ago that might help explain the previous structure:
https://steemit.com/steemit/@steemreports/steemreports-the-anatomy-of-steem-and-steemit
https://steemit.com/steemit/@steemreports/steemreport-the-new-anatomy-of-steemit

I think these changes kind of split the RPC Server into parts, which are each less resource intensive to run.

·
·
·

Yeah, some kind of sharding by an application.

Loading...
·
·
·

Informasi yang menarik

·
·
·

Thanks you answered my question too

·
·
·

I will check these out bro. Thank you! I'm struggling to grasp the big picture about nodes--as there are numerous variations of establishing a consensus. Just trying to learn by my self.

Loading...
Loading...
Loading...
·

I hope this appbase could be very nice platform for steem users and holders.I think future of steem in this new invention ,is very bright...

·

I think this situation will not face again for everyone

·

ARE YOU CRAZY ?

·

Okay sir @netuoso
I'm Russell ,
I'm waiting for details post for the developer company.🙂

·

it will be very helpful for us :)

·

This community is great, I love the togetherness and how everyone is willing to work to make this an accepting place where we work together to achieve dreams and share passions!!!

·

Appbase is a must for steemit blockchain

Loading...

I am a regular user, I tried posting from steemitSTAGE.com on iOS 9 (I cannot afford to update, LOL) it works fine but am lost in "Vote for Witnesses" page (^_^). I logged in using my generated password. Will try from Chrome on android too.

·

Thanks - it looks like you spotted a bug, actually.

·
·

You're welcome and thanks a lot too!

Loading...
·
·

Just tried it from chrome on android using my posting key and works just the same. 👍

·
·

Hi @justinw! I always forgot this. I hope the preview when creating a post at steemit/steemitstage can be fixed too (^_^)
image.png

·
·

The PREVIEW is fixed. Thank You! ❤️

Loading...
·
·

Hi. Im new to steemit. What does "Votes for Witness" mean?

·
·

Click MENU and you can find it there. Just click the arrow up beside their names i.e. blocktrades, steempty, etc. or if you want to vote for bue, zappl, etc. who are not on the top 50 just type bue then zappl, etc. in the box provided and click VOTE. You can view the list of 100 Witnesses here: https://steemd.com/witnesses




Or if you want me (or someone) to vote on your behalf just type pinay and click SET PROXY :)

READ THIS: https://steemit.com/steem/@steemitguide/steemitguide-what-is-a-exactly-is-a-steem-witness-and-why-every-user-should-vote

·
·
·

Thank you, appreciated.

·

So you're not using proxy voter anymore? Haha.

·
·

What you see is what you see. LOL

·

you are genius Mam <3

I used my posting key

If you’re just a regular steemit.com user, you can help too. Head on over to steemitstage.com and use the site like you normally would.

Your testing module felt the same as the steemit I know and love.

·

Does it mean someday we'll all move to steemitstage?

·
·

No, we won't move to Stage, Stage will come to us!

Stage is just on of the phases that a product goes through from development to production:

Dev -> Test -> Stage -> Prod.

If everything goes well with testing of Steemitstage, Steemit will be replaced by the one on stage testing phase, but we will not move to another page, we will use and go to https://steemit.com as we currently do.

·
·

I am pretty sure that is the idea @goal300, I am as thick as a brick when it comes to technical articles ....hehehe

·
·

No, I believe that is only a test environment.

·
·
·

I stand corrected, I love poking and prodding around to see if I can break something...Thank you @orbitalqq.

Loading...
Loading...
Loading...
Loading...

Is there a difference because I don't see it. It looks exactly like the steemit.com interface

·

If everything is working the same as before, then that is good in this case. These changes are all “under the hood” to make the underlying blockchain run more efficiently.

·
·

I get it now. Thanks for explaining.

·
·

Less bandwidth problems i hope.

·
·
·

No changes to the bandwidth formula, as far as I know.

·
·
·
·

One, can only hope. L

·

If you want to see a difference, look at the witnesses to vote for.

·
·

More specifically these changes are all backend and should not be visible to the end user. If you encounter bugs or problems that is good to report on https://github.com/steemit/steem

·
·

Will check that out asap

·
·

You were right. The difference is pretty noticeable when voting for witnesses. Its so amazing that the entire feel is exactly like steemit.com though...incredible work

·

You are absolutely right @kwakumax. It looks and feels exactly the same as Steemit.I guess its just a more efficient future oriented version

It is great to see this amazing progress. Improving scalability is always the way to go! :) Lets scale it to the moon. I am really excited. And I hope that in the future maybe I will do some development on Steem. :D What a bright future we have in the cryptocurrency world.

Writing this from steemitstage.com :) , everything seems to be working fine for me in Chrome (Version 64.0.3282.167).

And this change certainly indicates the readiness for the next big thing - SMT.

This is a fabulous update, congrats to the team and all contributors. I will do my testing on staging and try to spin a new instance with this new version.

One question: the upgrade is stable enough for witness nodes as well, or should we wait until the official hf 0.20?

Again, chapeau, guys!

LE: upvoted for visibility

It is really a great step and achievement. My heartedly congratulations to entire team of developers!

This is great news. Keep up the great work.

Very exciting to see! Side chains appear to have the potential to bring in the classic (owner controlled - centralized) business models and allow them to coexist on top of the STEEM ecosystem! They can pick from the underlying layers of STEEM they want to adopt, then create what ever controls they want from there. Let me know where I'm wrong with this view! Thanks! Great work!

This is really great.
I love the way steem blockchain is improving day by day.
Definitely, it is going to help a lot in scalability.
Anyone has idea when SMT's are going live?

I'm trying to make a game for steemit and it would be really useful if I could put text information on a block that wasn't a blog post or comment. Is this possible?

Also, is there anyway to get notified by the blockchain when someone replies to a post? Currently, I'm simply scanning the blockchain every 3 seconds to see if anything has changed. It seems very wasteful compared to a listener.

AppBase enables many components of the Steem blockchain to become modular by creating additional non-consensus blockchains as dedicated plugins.

I really wish I knew exactly what that meant. Sounds awesome though :D

·

If you haven’t already, you should join the SteemDevs discord group: https://discord.gg/B29Bbng

There are a lot of people there that are good to discuss these types of questions with :)

·

Have you tried Steemify on Ios, as far as I know, the only criteria is under User, so not much customization, still could be useful?

·

I really wish I knew exactly what that meant.

It basically breaks the blockchain code into separate independent ‘modules’ so that people who are running instances of the blockchain can pick and choose which components they want to run.

·

Check out the yo notification framework https://github.com/steemit/yo

·
·

I think he was referring to a listener you could send to the blockchain that would let you not replay the entire blockchain and analyze event by event (which is what the yo notification framework does) but to tell the blockchain "only send events if they match this criterion". But as I think it's not possible, I think your solution is the best one out there.

Yo not in JS but it's awesome RPC API seems awesome, so I'll try to integrate it to my code.

·
·

Wow what a nice and cool comment,upvote my contest pleasehttps://steemit.com/thegraycontest/@horlly/thegraycontest-week-3

·
·
·

Leaving comments asking for votes, follows, or other self promotional messages could be seen as spam.

Your Reputation Could be a Tasty Snack with the Wrong Comment!

Thank You! ⚜

·

In the option list there is the replies option where you can replies.

·

Yes, you can get notified
Steem is making giant strides and leading the social network

·

Custom_json is what you probably want

·

If you use iPhone you can get the Steemify app

·

Hmm, I guess AppBase is providing a platform that will enable Steemit users to upload a particular functionality/plugin for a better experience on Steemit (just as we have plugins for WordPress blogs).
What a cool development. Thumbs up to Team Steemit.
Thanks for sharing @steemitdev

FEATURE REQUEST!

Adding article to a "Favorites" list and/or "READ Later List"

This is awesome @steemitdev. Great to see a strong dev team behind this blockchain. I cant wait to see what is possible when this is further tested and developed. Thank you for the hard work.

·

I totally agree with @thejohalfiles @steemitdev you guys are awesome.

The world we live in is filled with people with all talk with no action.

It's very encouraging when you see someone knuckle down and start taking massive action!

You guys will be the Pioneers that kids generations from today will be reading about in story books.

Please keep up the good work and your dedication 👍🏾💪🏾💪🏾

These seem like great news, but honestly where is the documentation for all of it? I have been struggling with proper up to date documentation for the "normal" steem blockchain and if that is any indication, it will take some time until people post useful tutorials and info, simply because they will need to learn by trial and error. I know this project is ooen source and I should just fix the docs myself but seriously, if you are serious aboit attracting developers, documentatiom shoild be the first priority...

Still, seems like great news.

·

Right now the “Developer Portal” which is linked from the main menu of steemit.com is the central place for documentation. It is a work in progress though.

You can also join the SteemDevs discord group where community developers go to chat: https://discord.gg/B29Bbng

·
·

Yeah, the developer portal is a bit lacking in substance. It provides very basic examples to get you started, which is good, but as soon as you want to look at some of the more advanced functions, there is a lot of guesswork involved...
And now it seems all those APIs just got replaced....

Thanks for the links though. The people in this community are its saving grace.

Let us make our future now, and let us make our dreams tomorrow's reality. - Malala Yousafzai.

Steem future looks bright.

So just from reading this:

AppBase enables many components of the Steem blockchain to become modular by creating additional non-consensus blockchains as dedicated plugins.

It seems like we are going to have the ability to fully customize our experience on steemit by implementing "plug-in" style additions.

Does this mean that anyone can create these modules? IF so this is a huge boost and something I was hoping would be implemented. Things that can customize the experience and make it easier to use, or bring new utility would be really awesome, can't wait to try it out tonight!

I don't know what you just said there, but glad you guys got this thing under control.

·

Ha, touche, I'm with you there 🤣🤣

          On steemitstage the font is a little bit smaller, this is not a complaint, just an observation from just a user. If you can globally set the font size as a developer, is it really that much harder to give users a setting for choosing there own font to view on their page only? Kind of like choosing the day/night setting, a couple more menu Items, font and size? Any way still exploring and will try to steemitstage at various times and drop findings here for you all.

I actually understood this quite well oddly enough, sounds very similar to having a server cluster for a website backend, cloud computing if you will. A cluster for SQL, cluster for PHP, cluster for cache, you get the picture. Instead of it all being on a singular dedicated server, you spread it out across multiple servers and allow multiple servers handle the requests from a singular app or module and scale as needed.

Not bad.

Thanks for your post! I was searching on such info.

·

You got a 6.52% upvote from @edensgarden courtesy of @selmaci!

Great news for us all !

Wow, this is exciting, continue to be super bullish on Steem's future

Steem blockchain will go far.

Good luck !

·

This comment has received a 2.72 % upvote from @speedvoter thanks to: @xerox-bru.

Wow! Congratulations! This is a ground breaking achievement indeed! Off to try out on steemitstage.com. Well done sir!

Sounds good

Can't wait to see this be released!

Please pardon me for being new and somewhat dense. Is this a sidechain and if not, what is the difference?

·

No, it is not a sidechain. There is still one blockchain, but different components can be turned on/off on the individual nodes. For example, an exchange node may only care about account balance transactions, and may not want to run all of the logic related to posting, commenting, voting, etc.

·
·

Got it. Thank you for the clarification.

읽어도 아직 은 잘 모르지만 읽을 만한 가치가 있는 것은 분명한 것 같다.

It seems to be good step forward to strengthen and securing the steemit block chain.
Regular updates without making the changes in basic structure of the steemit is a good consideration.
Hopefully this will reduce the burden on witness management and also reduce the nodal load.
If I am able to contribute, I will do.
Keep this good work going and making this platform more successful and transparent.
Regards.....!!!

Thank you guys for your continued effort to make this platform stands out as the best, i resteemed this

please follow

This is awesome, thank you for all the hard work the team has done this far to pull this off! Going to try it now.

I am glad our witnesses are working so hard to develop and support their platforms too. In my smallest way to support the success of Steemit, and Steem blockchain, I am already utilizing each one and getting the hang of it myself and trying to create blogs of how I incorporate each apps to our daily lives. Just like any other social media. One by one I am starting to use it, love it and promote it and let people do the domino effect as I motivate them as well to never lose hope on steemit. In which myself have experienced it but still here and rocking with brilliant minds.
Now enjoying busy.org and steemgigs. Stilll trying SteemTipper and parley.
Thanks for this posts. Our responsibility to always get ourselves updated.

the information is very good, I will learn more, about this explanation.

Using it now to make this comment. From a regular user's view there is no difference, other than there's no down vote button. I personally would rather see a down vote button (as in disagreeing or spammy comments) than a flag (which I have seen abused for merely disagreeing with one's point of view or other silly, frivolous matters).

Excelente, así es que es la union hace la fuerza, mientras mas unidos mejor hay que apoyarse de igual forma todos ganaremos quien me apoye votare siempre por ellos, suerte...

logged in using my keys. runs great. resteem checks out and here's a comment.

This is a great update! Eager to learn more.

It is really awesome that someone is delegating money to the reward pool...cool man....thabks for helping steemit community.....hats off for this..

your post is very useful ,,, I will try

@steemitdev I know you all busy. I am just wondering when will you ever fix the bug on the wallet tab?

It's been a month or so and the issue hasn't gone away.

Saving this for later. Thanks, let's see if updating my node goes as exciting as this looks.

Hello, I'm new to Steemit and I'm not sure what this is all about. I logged on to that site and it just looked like Steemit....What exactly was I looking for that is different?

Thank you
for his science ...

Woow... Very good post, really helpful and your posts become additional knowledge for me.. Good work @steemitdev

thanks for the info I appreciate it. post for today

Very good if any app like steem. I believe with this posting, will many who will use the application. Very good post @steemitdev. Good Job

What is it all about?

Good work,good post.

Interesting article! Checkout @cryptobroye for more bitcoin info and analysis. Im sure there's a lot we can learn from each other!

what's up with https://steemitstage.com/? seems to be down :-/

Using 3rd party application for steemit i don't find it of any use anyway you might have made this platform a better one but i think am better off using steeit.com they don't take any shear from you work in the name of curation so being a regular user i think i won't use any 3rd party app for steemit. Thanks anyway for providing such platforms

So over my head, but I'm trying @steemitdev..

Congratulations @steemitdev, this post is the most rewarded post (based on pending payouts) in the last 12 hours written by a User account holder (accounts that hold between 0.1 and 1.0 Mega Vests). The total number of posts by User account holders during this period was 2940 and the total pending payments to posts in this category was $11708.40. To see the full list of highest paid posts across all accounts categories, click here.

If you do not wish to receive these messages in future, please reply stop to this comment.

Congratulations, your post received one of the top 10 most powerful upvotes in the last 12 hours. You received an upvote from @ned valued at 526.13 SBD, based on the pending payout at the time the data was extracted.

If you do not wish to receive these messages in future, reply with the word "stop".

Congratulations, your post received one of the top 10 most powerful upvotes in the last 12 hours. You received an upvote from @thejohalfiles valued at 299.50 SBD, based on the pending payout at the time the data was extracted.

If you do not wish to receive these messages in future, reply with the word "stop".

testing from steemstage, and it is a great day for some good news.

This is exciting. I will be posting my next blog using it. I have seen how similar it is to steemit.com and so yes, you succeeded in designing it as 'real' steemit.

This is a great development. Hopefully, there is(will be) a store for these Apps. Can't wait to optimize my experience on Steemit every day.

greatstuff!!! :):)

Nice contents

Bug report:

I tried to reply to a comment

I wasn't logged in, so it asked me for my password:

I pressed Cancel, and instead of returning and letting me keep writing my comment, the field was blocked, had a forbidden mouse sign on hover and the Post button had been substituted by a loading sign.

thanks for sharing.

Thanks for this great post keep up the good work great content 👍⚡♨️

When you want to Flag them but see their Steem power lol

WOW congratulations steemit !! I'm just waiting to see Steem's foot move forward ...........

17155303_1118489921630831_8059004870372699192_n.jpg

Does anybody know how big the Steem blockchain is at the moment?

Great, simply great. Positive changes all around, really. I'll be loving the condenser_api. Great work from the developers.

What does this mean for a non-programmer layman user like myself?
Since it sounds like some kind of success, congrats!

thank you

thanks ..!!

this help fully

Trying it now, its good but the steemit more info extension does not work on it??

Great work!!!!! I logged in through steemitstage.com, it goes very fast!!!!
Thank you.
Best Regards from Canary Islands.21764902_10213850573041038_7018196675561808839_n.jpg

Great news for steemit Community, it will distribute the load and will make steemit more easy and effectively to use :)

Thanks for all the charts and opinion.Upvot and resteem.I appreciate your work.

Thank you for sharing this, great news for the steemit community, Im all in, no matter what. Dtube, Steemit, And steem crypto both , sbd and steem.

Thanks so much for posting a very good and very good, and also very useful, thank for sharing friends. @steemdev

The very good project, Steemit is growing...

Amazing news, glad we have a dev team that is consistently focused on progression!

Keep up the work lads!

can i get a follow

the scenery is very beautiful and the photos are very cool

Congratulation on your success of developing the appbase...steemit is moving forward...#team Steemit

very inspiring, stop at account @ftryfitri aids vote yes PhotoGrid_1518701100336[1].jpg

Very nice post and great article.. Thanks for information @steemitdev I like your blog

Steemit on Kokain, I love it! Testing it now!

Recently I met the platform steemit and today I decided that with each such update, I will invest in platform tokens.

what a great contribution, I like to know that there are new options to use steemit and I will start surfing steemitstage.com

Good post and outstanding vote follow @ vor3ss88

Wow really nice ....appreciate ir work i ll try .

it look like virtual motorways for data and future technologies