漫谈区块链


以bitcoin为例:

  • 1)社区维护一个区块链专属dns,dns域名硬编码在代码中,内容由社区爬虫去维护,区块需要提供被爬取的接口。
  • 2)区块链由旷工,客户端构成。旷工由利益驱动,长连接在区块链上,构成整条区块链的骨干网络。客户端指的是通过区块链进行交易的普通用户。
  • 3)由于区块链dns的存在,所以区块链不存在固定的拓扑结构。
  • 4)节点权重:被称为全节点的那一些客户端存储整个区块链的交易信息,其需要的是数据库集群,负载均衡,高并发,缓存技术。
    一般由专业的公司去构建全节点。
    轻量级客户端,接入全节点下面,部分参与记账,其运行依赖于全节点。
    web客户端,只提供查询功能,不参与记账。
    移动客户端,与web类似,一般也不提供记账。
  • 5)区块是一个交易记录的包,存在于内存数据库如redis或内存。区块链是历史交易记录的一棵记录树,存在于磁盘数据库。

数据一致性:

同步数据定时定量同步,确保账簿的一致性。

共识机制:

以最长链作为主链,即每个节点总是选择并尝试延长主链。
POW 确保整个区块链的时序性。(以太坊有专用pos的呼声)。一次交易中,pow胜出的一方获得写入区块的权限(同时获得一定的激励值,以确保区块链在利益驱动型阶段的秩序运行),并广播其他节点接收此次交易。

区块链共识机制的先天性不足:

共识机制,结果只是一种能力的证明,不是有效的运算输入输出,当获得的激励值,高于挖矿成本时,或平均成本高于激励值时,区块链就存在重大业务风险。 sha256(区块头+随机数),这个随机数是保证公平性的因子之一,防止在出现死矿机和超级矿机,但是从统计学的角度看,算力强的计算机总会快一点,也就是其能兼顾弱者,但是抗衡28原则。

区块链发展三个阶段:

利益驱动、技术驱动、业务驱动。

  • 目前是利益驱动阶段。
  • 所谓技术驱动,即保留数据不可篡改的核心目标下,提升交易速度,减少无效资源的消耗。
  • 业务驱动,即在第二阶段实现的前提下爱,大规模应用于商业行为,成为基础设置的一部分。

以太坊的出现:

为了弥补比特币能源消耗的问题,以太坊横空出世,核心思想是用状态替代能力,来作为一次交易的权重,PoS 算法。
阴阳共存,波粒二象性,事务总是有利有弊,鱼与熊掌不可得兼。pos会出现28现象,强者恒强,弱者恒弱,背离去中心化的初衷。

DPoS委托代理的出现:

一切复杂问题,都可以通过工程学去解决,工程部的核心理想就是分层。在效率和公平性之间,加上代理人机制。有代理人就会有委托人,
有委托人就会有选举有投票,有弹劾下野机制……。你已经发现,区块链技术也是在现有科学理论基础之上构建的,你认识他,似曾相识燕归来!
曾经有人提到过,所有(技术或非技术)问题到最后,是一个社会学或哲学的问题。
从社会学的角度去看,Dpos的超级节点(区块链基础信息登记库)的设计目标,应该是公益的,大规模的(由社区推动),但是也应该是可持续的。
即超级节点的收益与普通节点的收益分离。超级节点收益的来源取决于其对整个区块链的贡献,而由于地位具备公共服务性质,它也应该被限制激励
额度的阀值,也存在弹劾机制(比如餐位素食者要下野,比如实力此消彼长有的超级节点要下野,比如自然灾害超级节点失联超时自动禅位),而普通旷工依然是自给自足组,自强者不息。

比特币交易

简单来说,交易告知全网:比特币的持有者已授权把比特币转帐给其他人。而新持有者能够再次授权,转移给该比特币所有权链中的其他人,产生另一笔交易来花掉这些比特币,后面的持有者在花费比特币也是用类似的方式。

交易就像复式记账法账簿中的行。简单来说,每一笔交易包含一个或多个“输入”,输入是针对一个比特币账号的负债。这笔交易的另一面,有一个或多个“输出”,被当成信用点数记入到比特币账户中。这些输入和输出的总额(负债和信用)不需要相等。相反,当输出累加略少于输入量时,两者的差额就代表了一笔隐含的“矿工费”,这也是将交易放进账簿的矿工所收集到的一笔小额支付。如:

复式账簿交易记录

输入


输出


输入1

0.10BTC

输出1

0.10BTC

输入2

0.20BTC

输出2

0.20BTC

输入3

0.10BTC

输出3

0.20BTC

输入4

0.15BTC

总输入

0.55BTC

总输出

0.50BTC

交易费

输入

0.55BTC

-

输出

0.5BTC

差价

0.5BTC(交易费)

商业交易的场景

  • p2p,普通交易,例如购买咖啡
  • p2multi,集合型交易,例如支付薪资
  • multi2p,分散型交易,例如接受捐款

非全节点余额的获取

轻量级客户端存储内容为通过本客户端发出的或接受的交易的列表,或用户余额,在本机不存在时,可通过HTTP GET命令对一个特定URL建立了一个RESTful API的请求,(从某个全节点)返回一个地址的所有未消费交易输出,以提供给需要这些信息的任何应用作为建立新交易的输入而查询未消费余额
例如:

#  curl https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK
{
"unspent_outputs":[
{
"tx_hash":"f2c245c38672a5d8fba5a5caa44dcef277a52e916a0603272f91286f2b052706",
"tx_hash_big_endian":"0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2",
"tx_output_n":1,
"script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac",
"value":8450000,
"value_hex":"0080efd0",
"confirmations":297783,
"tx_index":47854970
},
{
"tx_hash":"0365fdc169b964ea5ad3219e12747e9478418fdc8abed2f5fe6d0205c96def29",
"tx_hash_big_endian":"29ef6dc905026dfef5d2be8adc8f4178947e74129e21d35aea64b969c1fd6503",
"tx_output_n":0,
"script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac",
"value":100000,
"value_hex":"0186a0",
"confirmations":242166,
"tx_index":71083209
},
{
"tx_hash":"d9717f774daab8d3dd470853204394c82e3c01097479575d6d2ee97d7b3bdfa1",
"tx_hash_big_endian":"a1df3b7b7de92e6d5d57797409013c2ec8944320530847ddd3b8aa4d777f71d9",
"tx_output_n":0,
"script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac",
"value":1000000,
"value_hex":"0f4240",
"confirmations":234325,
"tx_index":75974855
}
}

我假设一个基于区块链的虚拟货币交易流程,大致设计成以下方式

A用户通过扫码(包含B用户的公钥),将自己的钱包地址,支付金额,B用户的钱包地址,描述信息,A的私钥签名。将交易信息发送给一个全节点。全节点将交易信息发送给全网。B用户收到交易信息后,通过A的公钥确认签名合法性,通过B的私钥解密支付信息。B用户确认此交易有效,通过全节点确认。返回A和B交易成功。A广播给整个区块链,区块链全节点通过竞争并经过其他全节点的接受,来获得写入次交易的权限(全节点获得一部分差额或系统发放的比特币(参照金融系统M2货币发行)),选择主链写入交易(最长区块),再广播给其他节点同步交易副本。

挖矿提升算力的方法

挖矿的基本路线,朝着更强算力的方向演进,cpu、GPU、ANSIC集成电路、矿池(简单云计算(或rpc)+ 分布式存储(或rpc))

关于区块链的演进方向

我认为挖矿是区块链的应用之一,就像游戏是互联网的应用之一一样。挖矿完全代表不了区块链,区块链本质上是存储的安全性,加密,效率,而非节点的计算能力,也就是提升存储能力话语权,减小共识机制对资源的消耗应该是区块链技术的发展方向之一。
挖矿是在前期推动区块链技术发展和产品推广的一种机制。 这跟航天和冷战时期的军备是一样的道理,其见产生的材料学,通讯学,计算机技术,物理学,化学,工程学的技术,带来了航天产业以外的巨大社会生产力的提升。我认为区块链的价值体现在一个点:有可能起到重塑信用体系的作用。