Decentralized Applications:Harnessing Bitcoin’s Blockchain Technology
目录
什么是去中心化应用
- 拜占庭将军问题(即分布式不可靠通信环境中如何抵御恶意的串改攻击?或云‘分布式一致性’)
- 比特币:PoW防止了双重消费(重放攻击)问题
- PoW昂贵(消耗大量电力),但是能够防御Sybil攻击(一个坏蛋假装多个用户)
- 集中式 vs 去中心化 vs 分布式
- 应用架构可以是集中式+分布式:(比如SDN?)
- 有利可图的Dapp 4大特性:
- 开源
- Internal Currency:appcoin
- Decentralized Consensus
- DHT缺点:不强制节点之间的互相信任
- 如果你需要每个人都‘去中心化’地‘同意’某件事情,那么你需要块链
- smart contact
- No Central Point of Failure(单点故障)
- 基于BitTorrent协议的:
- PopcornTime:去中心化版的Netflix
- OpenBazaar:去中心化版的ebay
- FireChat
- iOS 7 multipeer connectivity
- Lighthouse:比特币钱包,嵌入了一系列智能合同
- Gems:比Whatsapp更公平的商业模型,广告商直接支付用户?缺点:还未开源!
- 支撑技术
- Proof-of-stake:根据财富数目?背后的逻辑:越有钱越不可能实施51%网络分裂攻击...
- Delegated PoS
- Proof-of-stake:根据财富数目?背后的逻辑:越有钱越不可能实施51%网络分裂攻击...
Dapp生态系统
- 去中心化的数据:
- 直接存储到blockchain中
- DHT
- 缺点:centralized trackers
- 缺点:缺乏激励,以长期存储数据(!)
- IPFS
- IPFS is a content-addressed system(根据hash), in contrast to the Web, which is an IP-addressed system
- merkleDAG
- IPFS has a sister protocol called Filecoin. Filecoin is used to pay miners (nodes that store data) using a novel value-for-data mechanism called BitSwap.(仍然在开发中)
- ... So, IPFS takes the best ideas from Git, DHTs, SFS, BitTorrent, and Bitcoin and combines them to create a decentralized data-storage network.
- 其他:
- Ethereum Swarm
StorJMaidsafe
- 去中心化的财富
- e.g. Litecoin:加快支付的速度
- sidechain(侧链):把起源点挂到块链,轻松bootstrap!
- 如果你只是想创建内部货币系统:Colored coins(在blockchain上创建一个自己的asset)
- Counterparty:如果你想要创建任何asset,则必须销毁0.5 XCP?
- Hyperledger:不依赖于BTC的缺点是需要创建自己的consensus机制(问题是没有一个比比特币的PoW好)
- Decentralized Identity
- BitAuth uses Bitcoin’s 现存技术 to create a 公私钥对 using secp256k1. It allows for 无密码的认证 across web服务. It gives you a SIN that is 公钥的hash. It uses signage to prevent MITM attacks, and a nonce to prevent replay attacks.
- OpenID
- Zooko’s triangle:对人有意义、去中心、安全 3选2?
- Namecoin
- ICANN,.bit
- Coinbase is the exact opposite of decentralized: it’s a bank for Bitcoin. It provides private-key storage as a service(普通人没有安全存储私钥的需求,所以他们把它代理给第3方)
- Decentralized Computing
- Decentralized Bandwidth
- 最后1公里(ISPs) 与 政府审查 问题
- meshnet(网状网,不需要中心路由器)
- Decentralized Markets for Decentralized Assets
- Ripple-style:你可以选择谁来获得一致性,而不是非得等大多数通过
- Mercury is a multicoin wallet that uses the cross-atomic chain (CAC) transfer protocol of Bitcoin to exchange value between cryptocurrencies
- Darkcoin:加密交易事务?
创建你的第一个Dapp
- go get -d github.com/ipfs/go-ipfs
- ipfs add hello
- # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
- ipfs add hello
- go get -u github.com/llSourcell/go-kerala/kerala
- 假如ipfs里每个内容都需要hash作为索引,那么传统的html(可能由不同的fragment组成)+css+js页面如何重构到ipfs呢?
- hash(MerkleDAG)依赖/引用不可能形成环路
- 假如ipfs里每个内容都需要hash作为索引,那么传统的html(可能由不同的fragment组成)+css+js页面如何重构到ipfs呢?
- httprouter
- router := httprouter.New()
- router.GET("/discover", displayUsers(node)) //node?
- 说是ipfs,其实不过是local-served而已,因为除非有人从你的机器上请求了数据,否则数据并没有被分发出去
- 不过这里的思想似乎可以用来指导webapp的数据架构,譬如index本身是一级请求(可以版本化),每个item是二级请求。。。
- Coinprism:创建你自己的colored coin,作为你的dapp公司的初始股份...囧
- 我们可以让用户为数据存储服务付费,但由于IPFS还不支持(!),所以只能“发布免费,阅读收费”
- Kerala
- Pay(fee string, from_address string, to_address string, amount string, asset_id string, private_key string) (string)
- Private Networks
- 你的‘朋友’可以获取你的私钥以解密数据
- unfriend?靠(重新发布公私钥对) => by IPFS Keystore 服务
OpenBazaar
- 反面教材‘丝绸之路’:所有的数据在一台机器上
- 用户的3种角色:
- merchant
- buyer:选择一个notary(而卖方选择是否信任这个notary)
- arbiter/notary(公证/担保 as a service,哈哈)
- Ricardian contract?
- 协议:怎么都喜欢用JSON来封装?靠
- 数据没有IPFS的‘复制’及‘内容可寻址’特性,只存在于参与者的本地机器上(因此对于NAT网关后的内部ip地址,实际上不可用?)
- Identity:GUID,类似于IPFS的peerID
- Reputation
- global trust
- proof-of-burn:创建商店必须销毁比特币(靠,感觉有点像把税献给上帝的意思)
- Remurrage/demurrage
- proof-of-timelock
- Method 3: trust-as-risk (most viable) 似乎更灵活...(不过可以假设买卖双方在现实世界中可以建立联系/信任)
- proof-of-burn:创建商店必须销毁比特币(靠,感觉有点像把税献给上帝的意思)
- projected trust
- global trust
Lighthouse(分布式众筹)
- bitcoin SIGHASH_ANYONECANPAY
- createPledge:要求众筹达到目标才能汇聚小事务到一个接受者
La'Zooz
- 去中心化的Uber?
- proof-of-movement
- 可编程地决定
- DAO结构(重点)
- 没怎么看懂,投票基于权重,而权重可以分发和代理???