请选择 进入手机版 | 继续访问电脑版

SWTC公链设计与开发细节揭秘

[复制链接]
发表于 2019-5-11 12:26:46 | 显示全部楼层 |阅读模式

2018年被称为“公链元年”,从6月到10月掀起了一波公链上线潮。

SWTC公链作为国内最早的一批公链之一,在2014年10月主干网络上线了,在2018年6月启动生态节点计划,在全球拥有40多个生态节点,成为全球范围内的领先的去中心化区块链网络。

本文以SWTC公链为例,介绍了公链设计和开发需要注意的诸多细节,供所有公链爱好者参考。






SWTC公链的基本特性

SWTC公链是建立在余额模型之上,采用RBFT共识机制和去中心化治理模式,且兼备智能合约平台和银关系统的价值传输网络。

为了读者有直观理解,我们将列出SWTC区块链网络的的基本特性和参数:

底层模型:唯一的地址、余额、序列号、历史等多种授权交易构造的账户模型

区块大小:10MB(可扩容至T级)

平均区块间隔:10秒

共识机制:RBFT

TPS:平均5000笔交易/秒

链上理论最大TPS:10000笔交易/秒

初始发行量:6000亿SWTC

支持:智能合约、银关系统、去中心化链上治理机制

这些特性和参数的确定是经得起市场考验的,是SWTC创始团队在综合考虑公链生态的现状、应用场景、技术可行性以及区块链特别是公链的发展方向等因素之后确定的。

在正式开始介绍各部分设计前,不妨先回顾一下SWTC设计初衷,有助于理解后续的许多实现细节。


SWTC公链设计初衷

SWTC公链的想法诞生于2011年,当时的比特币网络已经出现在硅谷人的视野中了,作为SWTC公链创始人的周沙先生发现了早期的区块链技术的魅力。

比特币的成功来源于两个方面。

一个方面是美国次贷危机引发的广泛的对中心化的不信任,另一方面是比特币利用密码学技术,提供了一个划时代的区块链技术。这两者相结合,率先在金融领域提供了一个去中心化的实用方案。






然而比特币的美中不足之处在于:每次区块生成时间为10分钟,确认时间更长,难以适应商业场景;POW的共识方式消耗能源巨大,但是比特币的价值必须以这种持续增长的算力维持,有较大的缺点;比特币通过脚本语言来实现一些简单的合约功能,合约不支持图灵完备的脚本,无法支持真正意义上的智能合约。

伴随着比特币系统的解构和重构,2013年开始,以太坊(Ethereum)带来了一次影响重大的概念升级。






它的主要特色是支持图灵完备的智能合约。它采用了POW的共识方式,加快了区块生成的速度,并通过vm来执行合约,使得合约的执行也能修改共识的输出。

它的主要不足包括OW的方式对资源的浪费,以及未来的POS的方式的不确定性;每个节点都需要对所有合约进行验证,整个系统的执行效率不能大于单个计算机的执行效率;跨合约的交互非常困难;由于合约与交易的共识互相捆绑,合约的bug直接影响系统的稳定;可能的硬分叉对整个系统的伤害会继续。

瑞波(Ripple)早期设计类同于哈瓦拉网络——一种基于熟人关系网和信任链的的汇款系统。






2013年瑞波网络经过区块链技术改造、账户记录、余额和欠条都会被每个人同步更新到网络节点中实现全球账户的集合更新。瑞波(Ripple)网络引入瑞波币(XRP),它作为瑞波Ripple网络的基础燃料(GAS),可以在整个瑞波网络中自由流通,而不在局限于熟人圈子。

瑞波(Ripple)网络设计了网关(Gateway)系统,网关是瑞波网络中资金进出的关节,允许人们把法定货币、原油、黄金甚至是其他任何其他东西汇兑进出于瑞波网络,并可充当支付双方共同的见证人。

但它的主要不足包括:使用场景局限于支付行业;系统上不存在智能合约功能;理论上存在资产被操纵的可能。此外,当时作为新兴技术仍存在很多的问题:

1.缺乏新型的合约平台;

2.大部分的工作量证明(POW)的智能合约不能参与商用应用;

3.没有考虑国情下的监管要求。如外汇管制,反洗钱等;

4.区块链生态还没有完全发展起来,和现有的中心化商业效率还有差距;

5.区块链不同于目前中心化的模式,对生产关系改造不彻底。

为此,SWTC创始团队初心很简单:能够做一条可以跑起来的规模性商业区块链网络。即希望提供一个稳定,方便使用的平台,企业用户可以很方便的接入,使用区块链带来的好处,同时不需要了解区块链实现的细节。

而且,企业有灵活的选择是否共享他们自己的用户,这样使得每一个新的应用都带来新的客户,同时新的应用也能获得平台的巨大的存量用户。这样构建一个“我为人人,人人为我”的良性循环的生态系统。

设计理念:

1.出于安全性、稳定性、匿名性和可扩展性等方面考虑,选择可与信任的银关体系搭配的账户模型;

2.比特币的升级需要团队和比特币社区的共识,重大的升级往往不能迅速取得共识,因此需要一条新公链;

3.商用设计优先,针对各种行业要求作出个性化方案,能够在去中心化的基础上,让用户自行选择兼容中心化的各种CA,KYC的服务等。

上述设计涉及到较多技术实现细节,接下来我们详细解释。

SWTC技术实现细节

账户模型:具有集体信任的去中心化账户模型

UTXO(UnspentTransactionOutput,未花费的交易输出)是比特币采用的底层账本模型。

而以太坊则采用了Account(账户)模型。

瑞波采用可信任的网关体系下的Account(账户)模型。

对于一般人来说,以太坊Account模型相对好理解,就是从一个地址到另一个地址,ETH的传递就好像银行账户最主要保存余额。

比特币交易UTXO模型,来验证一个人(其实是一个地址)是否拥有未使用过的加密数字资产用于支付。

UTXO的优点在于:UTXO模型是无状态的,更容易并发处理,交易的计算负担完全由钱包来承担;解决双花问题的逻辑和处理方式都及其简单,且支持原生多重签名;对于P2SH类型的交易,具有更好的隐私性,交易中的Input是互不相关联的增加一定的隐私性。

UTXO虽然有诸多优点,但当时基于UTXO模型的各种项目的底层脚本语言都是非图灵完备的,无法实现一些比较复杂的逻辑,可编程性差。对于复杂逻辑,或者需要状态保存的合约,实现难度大,且状态空间利用率比较低,与以太坊虚拟机所采用的Account(账户)模型无法兼容。当Input较多时,见证脚本也会增多,而签名本身是比较消耗CPU和存储空间的。

瑞波(Ripple)通过在更大的网络中利用集体信任的相关子网络形成共识机制以避免拜占庭式崩溃以及保持系统的鲁棒性,但瑞波不存在智能合约。

为此SWTC开发的账户借鉴了以太坊和瑞波的账户特点的能够适应智能合约和银关体系的账户模型:唯一的地址、余额、序列号、历史等多种授权交易构造的账户模型。在账本所储存的数据中,账户的核心数据存储在AccountRoot账本对象类型中,账户也可以被其他几种类型数据所拥有或部分拥有。

这种分层设计实现了底层账本和上层智能合约的完全解耦,使SWTC后续兼容多种虚拟机成为可能,也能让银关系统和拓展的物关系统能够对接传统的中心化的各种系统。


账户的安全性(拒绝服务攻击(DoS)可能性):

黑客往往利用攻击手段导致区块大小超过限制,新区块无法被接收,使得网络无法产生新的区块。






首先,日常交易中,SWTC公链的单一的区块容量保持是10M左右,这和比特币区块1M的容量相比,已经是10倍了。SWTC公链极限的区块容量是不设限制的,虽然数据保密,基本上,区块容量的极限值可以超过一般电影的容量。

其次,SWTC公链的GAS机制导致了黑客的攻击成本很高。例如,每个账户建立都需要保持20-35个SWTC,对于建立庞大攻击网络的黑客来说,增加了一定的经济成本。攻击中的每一笔交易还需要缴纳一定的GAS费用,对于日常的用户不受影响,因为Gas值尚在正常范围内。对于黑客来说,就有成本问题了。

再者,SWTC公链的底层复合了两种或以上的加密方法,支持多种加密方式。黑客很难破解底层的多种复合加密方式。

最后,对于SWTC公链的诸多应用。应用的项目方上链时候,都可以选择BaaS服务。

应用通过BaaS服务的模式,通过域名解析的方式将源站接入云安全防御节点,当发生DoS攻击时,网络监控系统会侦测到网络流量的异常变化并发出报警。系统的防DoS攻击功能接口,启动对相关被攻击IP的流量清洗,仅将正常的数据包转发给随后的网络设备。这样,就能保证整个网络正常的流量通行,而将DoS流量拒之门外。因此,黑客很难从SWTC公链的应用入手发动攻击。

以太坊有一套图灵完备的语言,可以实现比较复杂的智能合约逻辑。瑞波有一套网关体系和对应的共识机制,可以实现集体信任下的资产传递。两者都有强大的生态作为支撑,并且聚集了区块链行业优秀的开发者。

SWTC账户选择打通了两个原本分离的生态。

这一设计带来的好处包括:

1.获得与瑞波一致的稳定底层基础设施;

2.兼容现有智能合约生态,以太坊上的智能合约可以跨链形式兼容ERC-20,ERC-721等均兼容;

3.兼容以太坊上所有智能合约开发工具(当然有些需要做RPC的适配,SWTC已经实现了这样的适配),降低开发者学习成本。




由于篇幅有限,本文只对其基本原理和遇到的问题做简要解释,感兴趣的读者可以实时关注:

http://www.swtcdocs.org/


发表于 2019-5-12 06:34:54 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表