어제 메타커런시 프로젝트(MetaCurrency Project)의 공동 설립자, Arthur Brock과 Eric Harris-Braun이 Holo와 Holochain에 대하여 reddit 서비스의 온라인상으로 개발자 및 여타 관심자들과 질의/응답을 나누는 교류를 하였다. 답변자들이 미국 동부시간 3월 27일 20시에 로그오프할 때까지 약 10여 개의 질문이 나왔고, 총 50개의 질의응답이 이루어졌다.
- 해당 주소: https://www.reddit.com/r/CryptoTechnology/comments/87mer6/we_are_arthur_brock_and_eric_harrisbraun/
이미 사고방식이 블록체인 아키텍처에 고정되어 있는 개발자들의 질문도 보이고, 새로운 기술을 찾는 개발자들이나 사회적 기업 창업가들의 질문도 보인다. 그들의 질문에 답하는 두 사람의 답변 내용에서 힌트를 얻을 게 있어 보인다.
위 주소에 있는 질의/응답 사례를 몇 가지만 영문 그대로 아래에 발췌해 본다.
─. 질문1 / What are the 2-5 essential things to understand for a developer to be able to make the switch in thinking and become an effective developer with Holochain?
답변1/ Well, there's a couple things:
each node has it's own chain, there isn't a single blockchain out there that nodes come to consensus on, instead, think like a game where players make a move in the game and write that move down in their own cryptographic ledger.
Then they publish that move into the shared space which is a Distributed Hash Table. Other players receiving the move validate it according the rules of the game, which all players have a copy of.
If you think that way, of actors playing according to shared rules, then its much easier to develop holochain apps.
─. 질문2/ There are plenty of Youtube movies and topics on internet about Holochain, but i still do not understand how Holochain operates and is different. How can it be so scale-able?
답변2/ The main reason it is so scalable is that we don't require global consensus. First, each holochain application runs on its own independent network. Second, each transaction doesn't require the consensus of all other nodes as in mining. Instead every node has its own chain of cryptographically signed entries creating a transaction involves committing to your own chain, and then sharing that entry to the DHT where a subset of nodes will validate it according to the rules of the application.
질문2.1/ What inspired you guys to not use global consensus? Is there any applications that you feel would be less suited for your platform because of this choice? Are there any types of applications that you feel would be more at home without the need for global consensus?
답변2.1/ We think that global consensus comes from a mistaken starting point, what we call "data-centrism" the idea that data exists. Which it doesn't. For example we commonly hold the idea that a room "has a temperature" but that's actually not true. There is simply an experience reported by an observer, be it a thermostat or a human.
The same is true about the history of transactions on a distributed network. The point of the blockchain is to throw away the differences about the order of transactions and by lottery choose one history as real.
While it's kind of cool that you can do that, and keep up the illusion that there is such a thing as global time, it's not real. Instead, we start from the point that this isn't real, and instead record what happens from each node's perspective, and then validate that according the "rules of the game" i.e. the business logic of each application. You can come to as much agreement as you need to in a per-application way.
Thus, if you really want global consensus across all nodes, you could build that into your holochain app. We just don't think that's the correct starting point for generalized distributed computing.
질문2.1.1/ This is interesting. Can you eli5 ("Explain Like I'm 5")?
답변2.1.1/ Most consensus systems are coming from the assumption that every part needs to embody the state of the whole system. But that's not how real-world systems scale. Every cell in your body does not need all the information of your whole body. In fact, cells are very different -- some bone, some muscle, some brain. Yet they each carry the same instructions / DNA. And you could say the immune system enforces that cells are following those instructions.
That's how Holochain works. Each Holochain app has its own body because it is an encrypted P2P network which only speaks to other nodes/cells with same DNA. Each node can only change it's own state. If you are doing a currency transaction with someone, you each write the transactions to your own chains because you are each changing your state. Publishing these to the DHT lets others find the info, but it also enforces that you are following the shared rules.
And if you aren't following the rules in the DNA, Holochain has an immune system that uses your digitally signed data as proof of your cheating. It can create "warrants" which can be circulated so the other nodes start ignoring you.
Instead of managing one global body, the DNA makes sure that the actions of each cell follow the rules for cells. That lets this scale much larger and more quickly.
질문2.1.1.1/ How are the rules decided? Is it dependent upon the individual dapp or is it enforced by a different mechanism?
답변2.1.1.1/ Every holochain app is an app by virtue of the shared rules, in fact the app is identified by the hash of the code that is the rules of that app. That's why we call the rules the DNA of the app in that each node holds a copy of them (just like the cells in your body), and those rules are stored as the initial entry in every node's source chain. That way when validating data one thing that can be done is that nodes can track back other nodes' entries back to the initial DNA entry.
답변2.1.1.2/ To ELI5 again, the rules are set by the app. The rules are actually built in to the app so deeply that if anybody is playing by other rules, they're (by definition) no longer using the same app as everyone else. This is checked by the hash of the app's code as mentioned above.
─. 질문3/ What can be built now, vs what can be built on it soon?
답변3/ folks at our hackathons are already building interesting apps like distributed chess game, fractal-wiki, distributed library, plus more. I think what'll be nice soon is that it will all get much easier and many more tools an components will be written both for low-level app development and at the UI level.
─. 질문4/
- If both parties need to sign every transaction, how could it be possible to receive Holo while offline?
- How would you handle private or restricted data on a Holochain dApp? For example, in a distributed Facebook clone, would it be possible to change visibility settings of a profile to be only accessible by Friends?
- What prevents Sybil Attacks in Holo? Is it a permissioned system?
답변4/
- To do a countersigned transaction, yes, you have to be able to interact with the node who is countersigning. However, you don't necessarily need to interact with the human. If they have pre-authorized the transaction, it can automatically be countersigned.
- There are multiple ways to handle private data. Since each person has their own source chain, you can put private entries in your own chain, and create capabilities tokens to provide selective access. You can even self-notarize since your chain becomes immutable once header hashes have been published to the DHT, to be able to prove something was written/created at a prior date with many entries published since and all entries and headers validated and time-stamped by peers on the DHT. Holochain also has node-to-node messaging for private interactions that don't need to be permanently stored to a chain/DHT. Philip is implementing private channels in Holochat with each one as a side apps, bridging to the DNA of that channel app such that only those invited to run that app DNA are in the shared DHT space.
- Holochain provides a cryptographic data integrity fabric for building P2P apps. It is not monolithic -- ONE Holochain -- like the Ethereum blockchain that runs all dApps and smart contracts. Each Holochain app is a P2P encrypted network which only talks to the peers on that network. Your app can make it as easy to join as having a copy of the app code, or as hard as invitation codes, full KYC, and biometric identity confirmation. That is up to the app. Some apps (e.g. Twitter) may not care so much about Sybils. Some apps (e.g. currencies) may want to make it harder to manufacture malicious nodes.
─. 질문5/ As i understand Holochain is not offering global consensus but kind of a selective consensus where it's needed. That's cool, i think quite some dApps have no requirement for global consensus.
How effectively can Holochain implement dApps which need total transaction ordering for all participating users (e.g a decentralized orderbook or a fungible crypto token)?
Main advantage in your eyes vs blockchain & main disadvantage vs blockchain?
How does your approach compare to highly concurrent systems like Rchain (based on the rho-calculus, which is derived from the pi-calculus ) or the actor model? I think a concurrent system with dynamic composable sharding is pretty close to what you guys are doing.
Holo.host seems like a intermediate solution until, according to the vision, everything is solely based on Holochain. What is the long term value proposition of the Holo fuel in that scenario?
Thanks and good luck with your plans!
답변5/
One of our core devs is looking forward to re-implementing nakamoto consensus on top of Holochain. Currently I wouldn't make a guess as to how easy that will be to do. I'm guessing that the issue is which other requirements you add in, i.e. that it also be totally trustless.
Advantage: Holochain is built on an agent-centric ontology. I believe that this ontology matches the distributed world more closely, and thus our approach will make solving problems in that world much much easier. Disadvantage: It's hard, at first, to wrap your mind around this difference, and so getting folks to think this way isn't trivial. It's convenient to pretend that we can make a "computer in the sky" which is what Ethereum (for example) looks like. So it's hard to work against that convenience.
The Rchain folks are doing good things. (As are many other folks) I think all of us are exploring the space of how to get this kind of problem solved with slightly different starting points. Most other folks seem to always put a currency at the center of their solutions (which Holochain doesn't) and also don't go the full depth into agent-centric reality.
I don't think I'll speculate on the long term value proposition of any crypto-currency at this point. It seems like the world is changing waaaay too fast for that. We want to make a value-stable asset-backed crypto-accounting currency. I think that will be quite valuable for quite some time. But yes, our long term vision is to relegate monetary currencies to the dust-bin of history.
십여 개의 질문과 그에 대한 답변이 더 있습니다.