Announcing VULCAN!

in viva •  9 months ago

The innovating part of Viva is not so much its blockchain, but its lack of a blockchain.

Blockchains are wasteful and expensive places to store data. As Bitcoin has been learning with lightning network, blockchains are most useful as stores of timestamped references to data, rather than the actual data.

This is why the first piece of the puzzle for Viva is to create the Viva UnLimited Content Addressed Network, aka VULCAN.

This design document is intended for implementors and thus it may be a bit spartan on the flowery details. We have fundamental assumption that the reader is well versed in JSON, WebRTC, Golang, and Javascript. If this isn't you, then you are not the intended audience.

VULCAN is a P2P content addressed network using WebRTC. VULCAN was custom created for the Viva ecosystem and as such takes a very different appearance to almost everything.

VULCAN has a merklerchain similar to a blockchain, but there is no block height per se. Only a timestamp. Each block is addressed by timestamps or blockhash. A new block must reference an older block. The blocks track requests for data retrieval that have filled. The chain maxes out at 18 months length.

Blocktimes are 60 seconds. Blocks are considered valid if thy are entirely new content. Each block builds off delta previous blocks. This allows for forks to resolve naturally, since multiple forks can be merged into a super block as long as all of them feature exclusively new content.

In the event that one or more blocks in a fork are not exclusively new, the block and
all of its children are pruned, the transactions imported into a new super block.

Super blocks are once daily snapshots of all balances. Also called a "page" in previous papers I've published. It references a previous page, details all transactions since then and provides a daily summary of all balances.

You can refer to the Viva white paper for more details.

VULCAN messages are all JSON. The payload, whether text or binary is Base64 encoded.

A VULCAN message must contain the following fields...

Type: "request"/"response"
ID: unique message id. Note that each response must use the request msg id

Request messages should have a priority and a bid field.

priority:[0...5] 0 is life or death emergency, 5 means this is not high
bid: Quantity of viva, bid by the requestor.

The operation field determines much of what happens next. Valid operations are based on HTTP verbiage and the API is restful.

PUT, GET, POST, DELETE

PUT inserts data into the blockchain.
GET retrieves data from the blockchain.
POST updates data on the blockchain, producing a new version.
DELETE marks data as unused and safe to prune.

The post operation will set a new HEAD version against the base object, with the changed attributes. Please note that at this time there is no provision for packed deltas such as those present in git. Deltas are applied, but objects are copied. This is due to the fact that every object has a max age and may eventually be pruned automatically.

The next fields are the payload/manifest. Any object smaller than 4M:B should be included in a payload. Any object greater in size should be sliced into 4M:B chunks, each chunk given its own VULCAN object and the id referenced in the manifest, in lieu of a payload. If manifest, then you also need m of n fields in the chunk.

All VULCAN messages are JSON objects transmitted over WebRTC data channels.

It is beyond the scope of this document to discuss individual libraries and their particular semantics.

For the purpose of our pseudocode, we will assume a library with a controller entailed WebRTC. This library will be assumed to auto handle connection state and our entry point will be OnMsgRecv
The library will have a method "Send to Group," which will handle sending messages further on.

There is a 5 of 8 group assumption. Meaning each peer connects to 8 other nodes, at least 5 of which cannot share a common peer.

By enforcing this restriction, we ensure the network spreads out efficiently and does not centralize around a handful of hyperconnected nodes.

Thus upon initial connection to a node, a peer list is requested and checked against existing connections.

Ideally when connecting to a new node, the only common per list entry should be the one that referred to the peers.

Obviously though, this is an ideal and the reality is that there will be need to initially form heterogeneous bootstrap groups and then evolve towards 5 of 8 later.

Once connections have been established, it is important that some amount of flow control be applied to the network to prevent flooding.

We use a concept of slots. Each slot is 100 ms. But instead of turn taking, each node picks a random number. The last 4 digits correspond to a slot. Next, you broadcast the number and slot and begin hashing the number repeatedly, hash mod slot=0 and its your turn.

This provides a predictable yet stochastic flow control mechanism. In periods of extreme lead, we can also easily ad a proof of work hash to the message and only forward messages with a sufficiently high proof of work.

I will post more soon, STAY STRONG and thank you for your support!

Darth Vader photo courtesy of
Nimoy

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:  

Here comes the technobabble and the goobledygook again. What about the hyperledger? What about the traveling salesman? What about the crowns?

How the fuck does this all work?

·

hey you are the wise steem mind :) have you heard about the crown network?

and about viva, I never read what it was about, just brushed through it a few times, but they don't seem to have a solid tech goal or target. I for one know that abbreviations are easy to come up so VIVA CAN VULCAN

:D

You forgot the important part of this post. The bit where you ask for...

More Money!!!

As a reminder, here's Viva ICO announcement

https://bitcointalk.org/index.php?topic=1878942.0

Seem to be some big gaps between this announcement and what you're telling us now.
All the time we were told 'Viva has a blockchain', just not the blockexplorer yet.
Now we are told about lack of blockchain.
Viva page on Github sertainly speaks for 'lack of blockchain' indeed.

https://github.com/vivacoin

So why not instead of words just put some code on Github for people to be able to review the code ?

·

that's reasonable, but if the project isn't really clear on what it wants to achieve the code could be useless, if something changes in the direction.

·
·

People who have bought Viva Crowns are very clear about what they wanted to achive, they have bought licence to operate a mint on Viva blockchain

·
·
·

I've just read the post fully and it sounds reasonable to me, I've been thinking about the issues steem might have in a few years when it's a few hundred terra-bytes, then witnesses will be hard pressed and hopefully there are computers to support it in case it goes mainstream, it will probably fracture into multiple chains. dunno,

about viva, I haven't followed it, but be reasonable, the project is run by a few people and the code is probably done by 1-2 so no wonder it's taking time, these things have to be thought through beforehand, steem kind of went for it because of dan and it's still bad publicity, not to mention unfair towards everyone to have such a chasm of steem power

I wish i know more on cryptocurrency, I learnt crypto world is a good world but also a risk world.

Thanks so much for sharing this with us, tho am new to cryptocurrency but i find this useful.

Glad that Viva is still going :) I seem to be in the wrong places to be hearing about anything!

I'm not sure I understood all of that but am liking the sound of it!

goatsig

·

It's really not going. It's a sad and sorry tale

·
·

:< I was looking forward to Viva. Guess I'll have to dig into what exploded at some stage.

goatsig

·
·
·

well there is a lot to dig :D sometimes it's worth it... I haven't done it

It's nice that Steven has written something again, it makes me a little hope that this project is not completely gone, but can 're-awake' later...

Also I like that there are more technical specification in this text, although they are only superficial.

I hope all what happened in the last weeks was just a very big misunderstanding...

·

what happened i never got into viva and I never got to the bottom of it

·
·

It has all been quite the horrendous scam to be frank. William Banks is someone called Steve, lots of the funds appear t be missing. There is and has been no real code behind anything, just a poorly executed version of an open source (TxBits) exchange code to enable the exchange which people cant get their money out of.

Its a long long tale and quite terrible in its duplicity and calculating scammity.

·
·
·

oh wow, terrible, that's not a good state of anything it seems, I just passed by this project a while back, I have chatted with some of them, but I had some hoped for it, actually would liked to have seen something working

·
·
·
·

It sounded great. There were a lot of ideas in it that appealed. Sadly not the case now. It's a scramble to try and retrieve what funds are left

·

It's funny you mention Steven. Perhaps William will put a post up explaining that he isn't actually William Banks!! Wouldn't that be great for transparency!

Go Steven go!

·
·

Well that would be great!

So, did your wife post this one too, or are you out of jail now? Yesterday you said that you were in jail and the post said that your wife made it for you... but this one doesn't say that...

Did you make it back to your home state, or are you still locked up? Is there any way anyone can help?

Hey! williambanks
Can you send me all details to my Gmail
technoguys@gmail.com

Congratulations @williambanks! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemitBoard - Witness Update

Support SteemitBoard's project! Vote for its witness and get one more award!