-
What is the difference between blockstack and Ethereum?
-
What are kind of apps based blockstack?and how many apps are now developed on blockstack?
-
Do you guys have some guide for developers like Ethereum?
Welcome to our forum! Interesting question. There are a few technical differences like:
Computation and Storage
Blockstack does all computation and storage outside of the blockchain, and uses the blockchain only as a “shared source of truth” between clients. By contrast, Ethereum does all computation and most application storage in the blockchain itself. Like Ethereum, if two Blockstack nodes see the same underlying blockchain, they will independently run the same computations and produce the same state. Unlike Ethereum, there is no Blockstack-specific blockchain.
Programming Language and Tooling
Blockstack’s programming model is based on running off-chain programs. These programs can be written and debugged in any language you want. By contrast, Ethereum’s programming model is based on running on-chain “smart contracts.” These are written and debugged with a whole new set of tools, like Solidity and Serpent.
Scalability of On-chain Computation
Blockstack is designed around a “virtual chain” concept, where nodes only need to reach consensus on the shared “virtual chain” they’re interested in. Virtual chains do not interact with one another, and a single blockchain can host many virtual chains. Although Blockstack’s specific virtual chain is not Turing-complete (i.e. it’s a list of instructions to build the name database), it is possible to create Turing-complete virtual chains like Ethereum. These virtual chains can live in any blockchain for which there exists a driver, and virtual chain clients only need to execute their virtual chain transactions (i.e. Blockstack only processes Blockstack virtual chain transactions).
By contrast, because smart contracts run on-chain and can call one another, all Ethereum nodes need to process all smart contracts’ computations in order to reach consensus. This can get expensive as the number of running smart contracts grow, which takes the form of gas fee increases.
Scalability of Off-chain Computation
Blockstack applications are very similar to Web applications today and almost never need to interact with the blockchain. For most Blockstack applications, the blockchain is only used to authenticate the application’s code and data before the user runs it. By contrast, Ethereum applications usually require an application-specific smart contract, and must interact with the blockchain to carry out its operations.
TL;DR: You can think of Ethereum as a “heavy” blockchain that does everything for you. All the complexity is handled there, computations run there, and all scalability and security issues need to be handled at the blockchain layer. Blockstack puts minimal logic into a blockchain and handles scalability outside of the blockchain by re-using existing internet infrastructure in new ways.
Thanks for the question and a warm welcome to anyone developing on Ethereum. Blockstack and Ethereum belong in two different schools of thought when it comes to using a blockchain and building decentralized apps.
Let me expand a bit on Jude’s post.
Complexity in the blockchain vs. outside of the blockchain:
Ethereum puts all the complexity (computations and storage) into the blockchain itself. Blockstack wants to use blockchains (any underlying blockchain really) as a layer of trust used for bootstrapping other components on top. Meaning that Blockstack wants to put as little logic and data in a blockchain as possible.
Scalability of data storage
Blockstack has the philosophy that existing internet infrastructure should be re-used for performance and scalability. Blockstack enables users to use arbitrary storage backends like Dropbox, Amazon, Google as “dumb drives”. Only pointers to the storage backends are stored with Blockstack and encrypted/signed data is kept at storage providers. Blockstack can give you 98% performance of using a service like Amazon S3 directly and can scale out to comparable levels of existing apps running on the traditional internet and datacenters.
By contrast, Ethereum is focused on (1) storing data in a global Patricia tree within the blockchain, and (2) trying to build decentralized off-chain storage systems like Swarm. When these decentralized storage systems become available for general use, they can be used with Blockstack by writing “drivers” for them.
Introducing new features to the system
Ethereum is a blockchain, whereas Blockstack is a “layer 2” system (i.e. Blockstack is agnostic to the underlying blockchain, and is designed to run on top of existing ones). If you want to make changes to Ethereum, you’ll need to get buy-in from miners and other parties in order to deploy them. If you want to make changes to Blockstack, you can do so independently of the blockchain.
Mitigation against blockchain failures
Blockstack currently runs on top of the Bitcoin blockchain. The project is currently evaluating/discussing support for other blockchains. In the event of a blockchain failure (e.g. 51% attack, netsplit, hard-fork), the system/network can migrate to another blockchain transparently. Blockstack has done one such successful migration in the past (Namecoin to Bitcoin), since it was discovered that a single miner had more than 65% hashing power on the underlying blockchain. To the best of our knowledge, this was the first time a production blockchain application outlived the underlying blockchain. This design principle decouples the risk of a failure at the blockchain-level from the success of apps and services built on top.
Scalability of computations sent to the network:
Jude mentioned on-chain and offchain computations above. At a high level, Ethereum gives you a Turing-complete language at the blockchain-level, and all nodes need to process computations to catch up to the latest state/block. Blockstack gives you the ability to write Turing-complete state machines at “Layer 2”, called virtualchain in Blockstack. Your node can choose to process computations for only the state machines that you’re interested in. Instead of processing all transactions/computations from all the nodes, you only process the stuff you’re interested in while remaining on the same global network. This would help you avoid scaling issues.
For more information, see the Blockstack paper published at USENIX’16 and the Virtualchain paper published at DCCL’16.
As for a tutorial, I’m putting together a simple CLI demo app here. More to come of course . The API listing for the upcoming RESTful API is here.
As your description,blockstack is similar to Tcp or http protocol ?which is the best metaphor to describe it?like the digital gold for Bitcoin,house for websites and web applications.
Other questions:if I developed a web application like line or whatsapp,what are the essential steps I must do to put it in blockstack?like bitmessage or openbaazar ,these kinds of decentralized apps,Do they have needs to join blockstack?what are the benefits that blockstack can bring them?
Additionly,Do blockstack can invent another new 'Bitcoin ’ or ‘ethercoin’?
One metaphor we use is a “distributed operating system.” Just like Linux, MacOS, or Windows handles all the complexity for apps running on your computer (e.g., writing data to hardisks, file permissions, isolation of apps from each other, etc.), Blockstack handles all the complexity for apps running on a decentralized internet.
You can use the Blockstack programming framework to build a decentralized chat app like WhatsApp. Your app might actually be less complex than a centralized version because you don’t need to run infrastructure or worry about user accounts or access-control for users. Blockstack already provides a lot of common building blocks and you can just focus on the logic of your specific app.
Great post. A lot of good info.
Is there a way to increase data resilience and protect against data storage provider disappearance? Perhaps through some way to incentivize data replication within the network, so same block of data could be available from multiple providers?
Also, different storage providers have different costs of storage and delivery (e.g. S3 vs EBS). Is there a way to reward data providers for data delivery performance?
Thanks! [quote=“saver, post:7, topic:781”]
protect against data storage provider disappearance?
[/quote]
Absolutely. We recommend a replication factor of at least 2 to start. We have drivers for Dropbox, S3, Google, vanilla Linux, and drivers for other peer-to-peer systems and decentralized storage providers are in the pipeline. Let’s say you were using Dropbox and S3. For your data to disappear, both Dropbox and S3 will need to go down (or delete your account). The general model is that as long as any provider is online and responding your data is available on the network. From a practical perspective, putting your data on a cloud provider like Dropbox and a decentralized system like Bittorent can give you best of both worlds i.e., performance and censorship-resistance.
There is already a market for this. Data storage costs go down much faster than other computing hardware (memory, compute, etc) and competition in the market already forces providers to improve their bandwidth and availability. Users are directly paying for their own private storage (hosted through Blockstack on these providers), so additional incentives are probably not required.
Additional incentives become important for P2P backends where normal users (and not professional storage providers) are hosting your data. Does that make sense?
This question comes up every now and then. I’m adding a video in this thread as well that gives more details:
I have 2 main concerns with your approach:
-
security, I cannot verify sec of anything other than your names services on any chain ,since majority of code and data is off-chain?
-
having such a big disperse/heterogeneous approach to the ‘new’ internet will leave most with inconsistent quality of service, which already is a main concern for distributed apps
Still going over the 2 papers posted, but those 2 quickly popped in mind. Thanks and keep the good job.
-
Would you say that ether is a currency (that allows you to create tokens on top of it)? Or could we call ether itself a token? It seems like Blockstack is a token (and not a cryptocurrency) since it is agnostic to the underlying blockchain, right?
-
What would you say are the differences between a token and a currency?
Thanks so much!
Chris
From all the discussions as I understand, Blockstack directly competes Ethereum and not complement. Is it not risky to go against Ethereum at this stage? What will be plan B in case BlockStack fails to catch up to Ethereum? Or am I missing something?
My thought process is, one set of protocols will prevail in the end to make up the internet 3.0, just like web 2.0. If say, Ethereum ecosystem goes past all the scaling problems and emerges as the main platform for decentralized apps, what happens to BlockStack. Is it not wise to move in a direction to complement already existing protocols that are getting mature and have potential?
In crypto/blockchain, there is two biggest opportunities:
- Money
- Platform
Blockstack can’t compete with Bitcoin (money) >>> it’s basically suicide.
On platform, there’s a chance for winning though. Ethereum is not as big as you think. Correct me if I’m wrong but I don’t see any Ethereum dapp has real value/users right now.
Ethereum though has a lot of dApps, run on chain, heavy and slow right now. But there are many developments that are going to run apps on chain like truebit etc. Also Eth 2.0 is going to bring in a lot of innovation on the scaling front. I am not saying one is better over other, but what if Ethereum which has great researchers gets ahead in this space, is there a way blockstack can pivot to that ecosystem? or can they co-exist and inter operate as they evolve?
Point is how to attract talent devs.
Thats true for any ecosystem, the point is no body can predict which echo system will eventually mature into web 3.0 and hence my questions. It always good to think long term alternatives to be able to pivot and adapt.
It’s hard to predict the outcome because the parameters is changing through time.
Let say, I predict Success of Blockstack SoB = f (community, founders, devs, SEC, etc)
1.Community support change through time
2. Ryan - cofounder of Blockstack leave.
3. Devs some get out, some get in.
4. SEC’s decisions?
Many other factors like new competitors? a better algorithm? HardFork Blockstack? etc
I would say it’s almost impossible to predict the outcome. We may assume based on various parameters, but we won’t know for sure