1. 数字货币设计中的误区

1.1 采用TodaTree协议

系统采用TodaTree协议机制,将问题复杂化,用TodaTree解决移动端交易验证问题,远没有UTXO账本体系SPV简单,使用TodaTree是历史的倒退。

  • 将钱包和币映射到todatree的节点上,要使用merkle proof证明todatree上的节点的正确性,并不比使用密码学验证签名正确性简单。
  • 钱包的编号采用todatree的编号,根PKI没有关系,无法验证这个编号是那个钱包的编号,除非使用中心化的存储介质记录钱包的编号和钱包PKI账户公钥的对应关系供其他钱包的查询。
  • 将币映射到todatree的节点上,看似每个币都有唯一的编号用来跟踪币的历史,实际上币的拆分和零钱合并给币的有效性验证带来意想不到的困难,而大量币的交易都得一个一个币的区验证有效性,其工作量之大不容小觑,而在UTXO账本体系中只需验证某个UTXO属于某个用户的签名即可。
  • todatree中的钱包ID是有限资源,移动用完整个系统将枯竭,攻击者完全可以连续多开户来完成攻击。

1.2 手机参与共识

手机参与共识,是一个伪需求,手机算力有限,网络带宽不稳定,且手机不可能一直在线等特点,导致以下问题:

  • 第一,手机参与共识会导致系统整体算力和稳定性下降,系统算力的损失导致系统容易受到攻击。
  • 第二,获取出块权的手机如果性能太低可能导致按照预定的出块时间无法完成出块任务,这将导致整个网络的性能被这部手机的性能限制。
  • 第三,手机或者移动端是靠充电来提供能量,待机时间有限,客户不可能忍受每隔几个小时充一次电来让自己的手机参与共识所带来的麻烦,从客户的角度讲,用手机来参与共识应该不是一个真正的用户需求,移动端交易确认要求实时性是客户的真实需求,而参与共识赚取交易费是伪需求。
  • 第四,从经济学角度讲,对于算力宽带等性能弱贡献小的移动终端能获取共识赚取交易费,这会使使用户更青睐移动端参与网络,导致整个网络系统算力资源贫弱化,对系统的发展是不利的。
  • 第五,移动网络无法实现P2P网络,并且移动网络服务连接数量受限,移动端只有在WIFI下才能实现P2P。

1.3 公有链拜占庭算法共识机制

公有链网络采用拜占庭算法共识机制,需要参考FLP不可能定理,拜占庭算法不可能完成公有链的共识,更适合私有链和联盟链,需要稳定的共识节点集合,而公有链参与共识的节点动态的加入或者离开,系统中对加入的节点没有要求,也没有任何验证,如果是采用一个节点一票的方式,对于一个节点而言,无从辨别其他节点是普通节点还是拜占庭节点,因此不存在一个一致性算法能够保证节点达成共识。像PoW和PoS等相关共识协议实质上不是一种计算机共识算法,而是一种是一种经济博弈机制。

1.4 按照设备将系统分层

分层主要是解决移动端快速交易和移动端存储空间的问题,但是分层将有其他问题:

  • 不同层之间采用不同的共识机制,肯定有“不公平”。在同一个货币体系中,共识机制不一样,共识的难易程度不一致,共识后的费用有差异,就会有大量的交易“移民”到对自己有利的那一层。
  • 不同层的交易记录如不同的链,那么同一个货币体系,不同层间的交易到底记录到那个链中?同一个账户在不同的链中如何体现,移动层在共识时必须参考通用层的区块链数据,来判断该账户在另一层是否已经花费,以此来防止同一个账户在不同层同时消费出现双花问题,那么移动层就必须下载通用层的数据库,那么这样分层后移动层并没有减少数据存储量,事与愿违,系统设计更加复杂,问题也没有能够解决。
  • 分层之后如果不同的层都在同一个P2P网络, 消息是相互通信的,不存在明显的分层设计优势,在这种情况下,分层只能成为一个概念而没有实质性的内容;如果不同的层之间不在同一个P2P网络,层间网络隔离,那么层间的转账共识都成了问题。

1.5 把数字货币当成是一个币文件

不赞成将币作为一个文件设计数字货币,这样双花问题是最大的问题以及币问题的验证及其复杂,其实在数字货币时代不需要有币这个实体,只需要账本里面记录账户的币值并且能得到所在系统中其他人的认可,该账户就实际拥有它。有币文件反倒是个麻烦,因为现实中的实体法币是防伪的,复制或伪造需要很高的成本,并且复制和伪造的币跟原版是有区别的,而币文件的复制几乎零成本,而且副本跟原版一模一样,根本无法识别哪一个是真正的原币。再说币文件在消费时能否拆分,拆分后如何管理都是问题,如果不拆分那就缺乏消费的灵活性。

1.6 p2p网络分片共识

p2p网络分片形成多个p2p网络社区,p2p网络各社区都获取全网的交易信息然后分别出块,为了扩大共识范围和快速进行交易。各社区之间采用拜占庭共识从这些块中选取一个作为本次块加入链中,各个社区接收所有的交易记录,各社区出的块中交易记录基本相似。 对于P2P分片共识问题始终绕不开的三个困局:

  • 网络形成时预先设定分区。这样每一个节点就知道当前一共有多少个分区,可以随机加入,也可以不随机加入。恶意攻击者就会伪造多个虚假节点集中加入某一个分区攻击。
  • 如果在形成网络时由某节点创建分区,并且收集足够的社区成员构成社区。对每一个节点来说,根本就不知道本次共识有多少个分区,这种情景下要么形成一个个孤立的分区,要么挤到一个分区,因为所有钱包的算法是一样的,对于确定性的输入必然有确定性的输出,一样的算法必然有一样的行为。
  • 网络动态形成分区。由于P2P网络没有中心控制节点,动态分区只能通过节点各自的算法,但是无法获取整个网络的信息,每个节点的信息与其他节点不同,这种信息不对称会造成每个节点对分区的划分差异化,这是典型的囚徒困境问题,不管用什么算法要让这些节点对社区划分完全一致是不可能的,这是一次困难的共识。要在所有节点认识不一致的社区再达成共识出块,每个社区出块后再共识选择一个社区的块作为本次的块,一共相当于三重共识,这种风险的叠加,增加了出块失败的风险。只要有其中一个共识出现故障,本次出块整个失败,或者整个网络无法出块,不可用。

P2P网络分片区后整个系统性能和效率下降很多倍,在整个P2P网络系统中分区需要很多的处理逻辑和处理时间以及分区边界控制协调,分区了之后每个分区内出块签名需要验证,最终在那么多的区块里面确定一个最终的块又需要一系列的逻辑和过程处理,系统的业务流程复杂度增加了很多倍,任何一个环节出问题都会使得整系统瘫痪。分区并不是一个非有不可的特性,这样的分区也没能解决任何具有实际意义的问题,反倒把问题复杂化了,使整个系统变得极其脆弱,这个复杂的系统即使没有恶意攻击也难免面临奔溃的风险,从实际工程应用角度来说,任何设计方案都是受到客观因素的限制,没有完美的方案,只能在各项设计方案的利弊权衡中折中考虑,合理取舍,P2P网络的分区也一样,这样的设计思想虽然很有新意,但是弊大于利得不偿失,系统的稳定健康运行才是根本,如果只是闹着玩那就另当别论了。

1.7 P2P网络技术不适合移动设备

移动P2P网络的主要特征:

  • 网络拓扑结构不断变化:由于节点的移动性使移动P2P网络拓扑结构不断发生变化,造成覆盖层与底层物理层网络连接状态不匹配,引起寻找资源和数据传输的低效。
  • 节点自身资源受限:对移动设备的便携要求,使当前移动终端的计算处理能力、存储能力、能量供应等受到限制,这使其在贡献资源的同时必须考虑自身的能耗等因素;同时,服务连接的数量也受到限制,部分节点受所支持协议的限制在无代理服务器的情况下无法独立直接接入P2P网络。
  • 网络层编址和标志机制不统一:移动网络环境的异构性使得其网络层所采用的编址及通信方式有很大不同,要在其上建立统一面向应用的移动P2P网络,必须屏蔽网络层中不同的网络设备标识的差别。

移动端的天然特性是,喜欢切换APP,用APP不到3分钟大部分就关了,后台为伪后台,APP进入后台就挂起,因此P2P应用就成了空谈。所以说P2P网络技术不适合移动设备。

1.8 在ALTCoin中设计信用评级体系以及账户认证体系

在ALTCoin的设计不需要考虑信用问题,因为数字货币是使交易基于密码学原理而不基于信任,实现数学和密码学算法的自我约束,任何恶意欺骗系统的行为都会遭到其他节点的排斥和抑制,因此其不依赖中央权威机构支撑和信用背书。精巧的系统设计让作恶者付出更大的经济代价,使得作恶变得不划算,而非基于信任设计。区块链网络中,参与人不需要对任何人信任,但随着参与节点增加,系统的安全性反而增加,同时数据内容可以做到完全公开。区块链采取单向哈希算法,同时每个新产生的区块严格按照时间线形顺序推进,时间的不可逆性导致任何试图入侵篡改区块链内数据信息的行为很容易被追溯,导致被其他节点的排斥,从而限制了相关不法行为的产生和施行。因此ALTCoin设计添加信用评级系统和账户认证体系只能让系统更加复杂和混乱。

1.9 P2P分布式网络文件系统和P2P分布式数据库

P2P环境下通常可用的三种分布式存储方案及其对比:

  • 对等存储
    P2P各网络节点上都保存完全数据,通过P2P网络同步数据状态,是全网所有节点都能一致。该存储模式中各节点对等,没有中心节点,不易形成瓶颈,自组织性好。该存储案例如:比特币区块链,以太坊区块链等。
  • 网格存储
    所有的节点存储资源都被虚拟为一个资源池,并将其视作共享资源,这个资源池就是存储网格。存储网格的关键是虚拟化与统一性管理问题。关键是需要由中心控制节点负责任务分配和调度,协调全网节点工作。
  • 内容寻址存储
    内容寻址存储(Content Addressed Storage,CAS)是针对固定内容存储需求的网络存储技术。典型的案例如IPFS,存入的数据已数据内容的hash为寻址路径,修改后内容发生变化,路径也发生了变化,原来的路径无法获取最新修改的数据内容。

P2P分布式文件系统和P2P分布式数据库设计的最大难题是访问权限的控制问题,这与集群分布式文件系统有天然的区别,集群分布式文件系统是由固定节点调用和控制的,而P2P分布式则没有,在网络中的任何节点都可以随时存储文件或者修改已存储的文件,没有有效的策略限制,P2P文件系统将会变成一个垃圾场,不会正真的发挥它文件系统所应有的功能,反而变成了一个垃圾场。P2P分布式数据库也存在同样的问题,如果一个数据库没有数据访问权限控制策略,数据库中的数据就会被随意修改的风险,无法保证数据的正确性,就像一块不能准确计时的钟表,虽然可以运行,但是没有用。数据库一定要有中心,一定要有控制,一定要有主人,否则,要么就大而无用,要么就不堪重负。目前没有很好的机制保障P2P分布式数据库其存储数据的安全性。

1.10 DAG有向无环图的区块链结构

DAG模型的区块链是为了区块链能够并发进行,最早的提法是在2011年,随后也有好几个币(如:Byteball)试图用这种思路实现多个并发链分散共识的模型,如果这个能突破那对于区块链底层基础是个不小的飞跃,但到目前为止没有一个成功,因为DAG始终无法解决一个问题,那就是当一笔交易发布时,被几个并发链同时收录在块中,因为这条支链要是都是生效那就无法解决双花,如果包含了同一交易的块中只让一个生效,那变成单链了,DAG的优势全无,所以DAGs并发链的思路只能处于搁浅状态。

1.11 分散出块或分散共识的区块链模型

  • 以比特币/以太坊为代表的知名区块链项目都是采用的全局一条链的记账模型
  • 以天空币为代表的以账户为单位的账本模型,个账户各自记录各自的交易记录,声称可以达到visa的交易速度。
  • 以toda为代表的以币为单位的记账模型,在每一个币上的记录币的交易历史,声称可以解决移动端支付的问题。 除了全局一条链的总账区块链模型外,采用分散账本模型的区块链没有一个能成功的,因为分散账本模型没有一个在各个分散账本之间对账的机制,就无法避免双花的问题,如果一个数字货币无法解决双花的问题,那就永远没有生命力。

2. ALTCoin可行的发展方向

2.1 侧链

双向挂钩(2WP)允许将比特币从比特币区块链转移到辅助区块链,反之亦然。“转移”实际上是一种错觉:比特币其实并没有转移,但在比特币区块链上被暂时锁定,而同时在辅助区块链上有相同数量的等价令牌被解锁。当等量的令牌在辅助区块链上被再次锁定时,原先的比特币就会被解锁。这实质上就是双向挂钩所要实现的功能。

2.2 oracle预言机

oracle将区块链技术服务和现实生活中的多种需求场景直接高效对接,支撑对链外数据有更高频率访问需求的智能合约业务,比如智能投顾等场景,通过把外部数据引入区块链来实现链内链外的数据互通,让世界与区块链互联。