# KuChain 白皮书
## 背景
现代巨头扼杀了创新,去中心化正在挽救这一切。
比特币实现了分布式可信账本,分散了货币发行和存储的权力。智能合约实现了可验证运算逻辑,分散了逻辑执行与验证的权力。 资产所有权被数字签名算法与遍布在全球各地的计算节点共同守护,资产确权与价值流转的过程被简化为机器算法。
机器构建的信任设施极大提高了金融效率,基础设施的变革让金融领域充满了变数,无许可信任经济和开放金融时代已然进入爆发前夜。
成熟的开放金融将是一个百万亿级美金的市场。作为开放金融的第一代产物,以太坊生态中的「DeFi」应用获得了稳定的增长。基于DAO生态的合成稳定币、抵押借贷协议市场和代币原子交换协议等基于智能合约的功能服务也作为积木模块,被许多的金融产品使用。
但作为 DeFi 应用最为繁荣的公链,应用的执行效率和 DeFi 产品的安全性正面临着许多挑战,整条链的性能会成为制约应用发展的瓶颈,应用的开发者会站在更加长远的角度思考产品和生态的可持续性。
于是跨链和全栈应用链的概念被带到了社区,将业务逻辑与现有的基础设施公链剥离,实现更加灵活且定制的应用链,通过低成本的扩展升级,就能够满足产品长久的发展。无需受限于现有的基础设施性能,通过功能封装,屏蔽了链条底层的复杂性,开发者只需要关注业务层的设计与实现。这种分层思想激发了更多的应用类创新。
### 问题
以太坊让金融应用像积木一样组装并通过构建创新,集中解决了底层的共识、初始用户、数据和代码,但日渐臃肿。
应用链则将具体的应用剥离,分散到不同的链载体,产品与产品之间相对割裂,需要依赖标准或协议完成服务与服务的组合。
虽然全栈应用链可以通过跨链协议解决产品割裂的问题,但仍需要解决如融资,共识建立,配套基础工具,社区运营等实际问题,小团队无法快速启动业务,制约了应用链的普及和跨链生态的发展,开放金融基础设施的迭代和构建并非一帆风顺。
为了加速信任数字经济和开放金融时代的到来,作为开放金融底层「信任流转操作系统」的KuChain应运而生,未来 KuChain 既满足公有设施的高性能可扩展,又能提供应用积木的可组合基础和低门槛开发生态,同时支持异构区块链之间跨链通信的标准实现。
### 作为开放金融基础设施的要求
当区块链成为开放金融的载体,一个金融应用一条链将成为常态,要满足金融应用的开发,区块链设施必须要满足以下条件
* 支撑亿级的用户数量
* 允许普通用户无成本进入, 同时维持相对稳定的使用费
* 便于更新和拓展
* 低延迟
* 高性能
* 性能容量上限可扩展
* 良好的原生跨链支持
* 去中心化治理机制
### 支撑亿级的用户数量
KuChain创新的设计了一套全新的资源模型, 使得用户账户的资源消耗可以更小, 同时减少了资源的无故浪费与投机行为, 使得KuChain在可以接受的成本下支撑亿级的用户数量。
### 允许普通用户无成本进入, 同时维持相对稳定的手续费
KuChain为每个账户设置保护性的基础资源,使得账户可以在付出少量的手续费就可以使用链的基本功能, 同时减少用户操作的复杂性. KuChain使用手续费来作为资源的基本支付方式, 保证应用消耗的手续费相对稳定, 可以避免因为资源限制的波动影响应用的发展。
### 便于更新和拓展
KuChain上基于合约实现的功能可以简单的通过更新合约的方式更新, 同时KuChain添加了基于链上配置触发更新的机制, 这样可以平滑的进行链基础代码的升级, 避免大量节点出现硬分叉的情况. KuChain支持子链机制, 可以在使用二级链结构拓展主网功能, 这样即支持拓展新功能, 也能保持主网兼容性, 使得KuChain即不会被KuChain发展限制, 也可以与KuChain技术发展同步。
### 性能容量上限可扩展
KuChain可以通过子链实现主链之外的计算链, 这样可以拓展主网性能容量上限, 通过基于子链来实现对于其他去中心化存储协议的激励层子链, KuChain上的应用可以使用海量的数据。
### 良好的原生跨链支持
跨链是目前区块链发展的重要方向之一, KuChain通过子链和静态账户机制可以很好的支持各种跨链协议, 这可以为KuChain带来更大的应用场景。
### 去中心化的治理机制
KuChain不断探索更加去中心化的链治理机制, 基于L2子链添加丰富的基础功能以支持更复杂的DAPP开发, 同时强化轻节点在链中的作用和功能, 在高性能环境下基于轻节点加强链的去中心化程度。
KuChain的架构使得KuChain可以在KuChain之外进行更多的实践, 打破KuChain带来的天花板. KuChain将会不断探索更加去中心化的链治理机制, 在兼容KuChain的基础之上, 基于L2子链添加丰富的基础功能以支持更复杂的DAPP开发, 同时强化轻节点在链中的作用和功能, 在高性能环境下基于轻节点加强链的去中心化程度。
## KuChain 云图(Cloud Atlas)
我们深知宏伟蓝图更需要深耕细作,KuChain 社区将通过三个阶段逐步达成这一图景。
### 枢纽一 仙王 (Route 1 - Cepheus)
公链是资产载体,资产则是开放金融的价值媒介,我们希望 KuChain 能够满足日益增长的开放金融需求,KuChain 的第一阶段将向一条高性能低成本的金融公有链演进,专注于满足金融应用的商业化需求。
作为开放金融的基础设施,提供易用的交互接口与开发者友好的基础服务,让开发者构建去中心化金融应用的难度和成本降低。KuChain 将会支持与孵化金融公链的底层服务,例如 DEX 、资产交换协议,借贷,稳定币等等,这些服务作为开放金融的地基,支持更多金融应用的创新。
### 枢纽二 天龙 (Route 2 - Draco)
第一阶段的 KuChain 完成了一个繁荣的开放金融生态演进,KuChain 具备了成为开放金融区块链枢纽的能力,也能够将内部繁荣的金融生态共享给整个区块链行业。
KuChain 会基于跨链协议与生态中的区块链互联互通,为生态内的区块链提供资产路由服务。同时也会探索在其他链的跨链实现,构建一条价值互通的多链生态。
### 枢纽三 - 凤凰 (Route 3 - Phoenix)
前两个阶段,KuChain 成为了一条支持多链互通的金融链,在此基础上,我们希望能够再次扩展 KuChain 在业务场景的适应性和灵活性,使用子链架构完成复杂业务或更具高性能要求的区块链业务。完成业务层和资产层的分离,成为更加通用的区块链解决方案。
子链架构将提供更加类似于传统互联网技术栈的开发体验,定义一种子链与主链互通的协议标准,探索更多区块链与业务场景结合的可能。
---
## 技术架构
KuChain 在技术架构的设计上,整体与 cosmos-hub 的架构保持一致, 链特定的逻辑都基于模块完成, 在链外追加可拔插的插件, 插件 不涉及链本身的逻辑, 节点可以通过配置按需求加载。
KuChain 为提高应用开发者的体验,会增加更多的 API 支持, 为了适配面向用户和各种实现客户端所需的 http API 和 websocket API, 面向链下扩展服务的流式API, 以及面向节点运维需求的控制 API。
### 设计原则
KuChian 所使用的所有模块都会由 KuChain 团队独立开发,作为 Cosmos 社区成员,我们将保持与 Cosmos 代码统一风格进行开发,除去需要定制和重构的功能模块完之外,代码的设计与风格都会与 Cosmos-sdk 保持一致尽可能复用。模块中同样的功能和 Cosmos-sdk 模块名保持一致,且 KuChain 中所有引起资产的余额变更行为,都会明确的写入区块中,每一笔转账或变化都会以 Token Transfer Msg 的形式记录在区块内。
同时,我们为了降低验证人加入网络的门槛,也会将节点运维部署的流程优化,尽可能通过轻运维操作化的方式进行,不需要验证人进行太多额外的配置即可加入网络。

### 基础层
基础层包括 P2P 网络、共识算法和跨链通信协议。
P2P 网络基于 Tendermint P2P layer 实现,提供了一个防攻击的健壮网络基础。
共识算法采用 Tendermint BFT 拜占庭容错共识协议,在共识协议中,验证人节点有着不同数量的 *投票权*,网络中的产块验证人可以通过投票来完成区块数据的写入。
共识采用了大多数投票 (67% 票权)的最优拜占庭容错来确保网络安全性。这些能够保证网络的破坏者具有较高的攻击成本(需要持有超过 33% 以上的票权),共识协议能够识别出危害网络安全的行为,保证分布式账本数据的一致性。
KuChain 作为 cosmos-hub 的实现,使用跨链通信协议 IBC (Inter-Blockchain Communication)完成与外部链的跨链互操作,协议通过数据包交换,在多个不同的分区网络中流转资产与数据,也是 KuChain 作为资产枢纽和信任流转系统的桥梁。
### 模块层
模块层是 KuChain 整体开发与定制逻辑的核心,其中涉及到功能层面的模块,都已经按照 Comoms 的模块风格重新实现,在保证与社区代码风格统一的同时,模块之间更加解耦与独立,为整套链在各个阶段的功能演化提供基础。
已有模块列表:
- account —— 实现用户账户支持,自定义账号名
- asset —— 原生资产和多资产管理
- mint —— Token 发行模块
- distribution —— Token 分配模块
- supply —— 链整体资产状态模块
- genaccount —— 创世账户模块
- genutil —— 创世状态模块,定义创世链的状态
- params —— 链参数处理模块
- upgrade——链更新支持模块
- crisis—— 紧急状态模块
- gov—— 链上治理模块
- slashing—— 链上惩罚模块
- staking—— 抵押模块,负责产生验证者
- evidence—— 证据模块
#### 地址与账号
这里我们着重介绍地址与账号模块:
KuChain 的地址 (Address) 沿用 cosmos-sdk 的抽象, 在地址的基础上, 我们实现一个基于账户名的账户体系, KuChain 的账户并不是链的基本组成,用户无需关注链资源状态, 降低了用户的入门门槛。
KuChain 的账户名是一个 128 位长度的字节数组, 分别代表:
| 名称 | 长度(字节) | 范围 | 备注 |
| --- | --- | --- | --- |
| 账户类型码 | 8 | 0 - 255 | |
| 账户名编码版本 | 8 | 0 - 255 | 用作后续升级标识 |
| 账户名类别 (是否是跟账户名) | 4 | 0 - 15 | 用来标识账户名的类别, 0 代表普通账户, 1 代表根账户, 2 代表系统账户, 3 预留 |
| 账户名字符长度 | 6 | 0 - 63 | 账户名字符的长度, 128 位的账户名, 字符最多只有 16 个 |
| 账户名 (每 6 位代表一个字符) | 102(17 * 6) | - | |
#### 资产管理
资产管理模块根据自身 KuChain 链需求定制开发,除了原生资产 KCS 资产支持外,会支持多资产,同验证人身份一样,任何用户都能注册发行商身份发行属于自己的资产,发行商发行的资产将拥有唯一标识,且能够支持增发或燃烧销毁操作。未来采用多链或子链架构之后,将会支持外部和内部的跨链,最终做到每条链支持多种资产,一种资产可以路由到多条链中。
### 插件层
为了实现更灵活的部署, 在设计 Plugin 架构时, KuChain 的很多功能, 特别是与外部交互的功能是基于插件的, 这方面的功能与链的逻辑无关, 主要负责与链外的交互。
KuChain 的很多 API 和服务基于 Plugin 实现, 一些 plugin, 如DB plugin, 会强烈的与模块的实现相关, 为了减少这种耦合, 我们会基于通知消息来完成从模块向插件的交互(反向的可以直接基于 chain 接口).
### 接口层
Cosmos-sdk 提供了大量 http 接口, 为了支持 KuChain 的应用开发层更加高效灵活可扩展, 我们需要 websocket 接口和基于消息队列的接口(承载大量交易)。
链下服务能够通过扩展的接口层获得更强大的支持,不仅能够获得更加高效率的写入读取操作,也能够快速获得当前区块状态,提升整体的应用体验。
消息队列的存在能够帮助链在处理大量交易时提供一个缓冲,可以平滑整条链的访问压力。
借用支持中心化数据库服务的插件,链本身也能够将大量的查询负载转移给更具查询和响应效率的中心化链下服务完成。
### 应用层
应用层包含了 KuChain 团队提供的区块浏览器,浏览器轻钱包、开发者工具与治理工具等,链的第一阶段会引入智能合约实现,开发者基于智能合约的去中心化应用也会纳入应用层的范围。
## 治理
### 共识算法
KuChain 采用了 PoS (Proof of Stak)共识机制,更加高效且抗分叉的共识机制是 KuChain 作为区块链操作系统的最优选择,验证人将行使其宝贵权利,对区块写入进行投票表决,通过打包区块获得验证人激励,持币用户也可以选择网络中的验证人,进行质押投票,获得区块打包的收益。
验证人网络排名会根据整体的获得的资产抵押占比权重(后面统称「票权」)来决定其产快的概率和投票的权重,在网络中用户抵押自己较多的节点就拥有较多的票权和较多的产块收益, 而抵押较少的节点拥有的票权和整体产块收益较少。
**验证人的产快收益会以不通胀增发的方式进行发放,详见后面章节。**
### 验证人
验证人是 KuChain 治理的核心角色,是共识的维护者和见证者,他们需要足够诚实稳定,提供验证交易,搜集交易,广播交易,打包区块,参与提案投票等服务。
网络启动之后的第一个四年,KuChain 将会有 33 为产块验证人节点,每四年增加 33 名,之后维持在 99 名产块验证人节点。网络中的区块投票或提案投票都会遵循 2/3 的票权比例,作为链上决策依据。
在 KuChain 启动后,为了降低验证人参与的门槛,区块大小的在 1M ,如果在链运行的期间内没有扩容需求,则会在四年之后例行扩容至 2M 大小,再隔四年继续升级,确保节点在硬件成本不变的情况下,提升网络吞吐量和手续费收益。
### 委托人
KuChain 网络中的委托人可以理解为持有 KCS 并参与到验证人抵押的网络用户,委托人可以通过使用自己持有的私钥签名一笔抵押交易,使自己手中的一部分数额的 KCS 从未抵押状态进入到抵押状态,也可以像链上发起交易,将委托的代币从抵押状态进入到未抵押状态,处于对网络安全的考虑,赎回操作需要有 14 天的解除抵押等待期。
如果委托人想要转投验证人节点,那么可以直接进行转投操作, 无需解除抵押状态,委托人可以发起领取分红的操作,抵押的收益将从奖励池转至委托人账户。
### 治理架构
KuChain 既不主张原教旨主义般单纯的链上治理,也不忽略链下社区用户的表决和意愿,我们希望使用链上与链下结合的方式,推动网络和社区的发展。
#### 链上提案
链上提案分为文本提案和参数变更提案两种类型:
文本提案需要链上决议,链下执行,接受社区监督并鼓励节点最终委托人的表决和意见。
参数提案则是需要验证人表决修改链上参数,全部过程在链上公开的进行。
##### 提案流程
- 用户抵押保证金提交提案,达到最低保证金要求后天进入投票期
- 如果提案未进入投票期,可以将保证金退回
- 投票时间为 14 天
- 验证人选择提案投票类型
- 同意
- 强烈同意
- 反对
- 强烈反对
- 弃权
- 提案根据验证人所拥有的委托票权比例来统计结果
- 参数变更提案通过后直接生效
- 文本提案社区自行处理
- 需要对系统升级的提案,需要开发团队进行开发之后,验证人配合进行代码升级
##### 投票治理规范
1. 验证人未能在投票时间及时对提案进行表决,将被系统自动踢出验证人序列一段时间,默认为一周
2. 委托人自动继承其委托的验证人的投票权,当委托人自行投票时,这一投票可以被覆盖掉。
3. 每个提案,投票者可以表决取走保证金(为避免过多的无意义提案),如果超过半数的投票者表决取走保证金,则保证金将会转入基金会账户。
4. 超过 1/3 票权的提案表决为「强烈反对」或「强烈支持」的结果,就可以否决大多数验证者的决定,如果大多数验证者投票被否决,那么这部分验证者将失去一天的出块奖励作为惩罚,而否决大多数验证者的这一方面,还将额外失去 0.1% 的 KCS 作为惩罚。—— 这一规则适用于当前社区对提案出现较大分歧,且少数票权无法战胜多数票权的情况而设定,防止整个网络出现多数人「暴政」。
#### 链下治理
链下治理作为链上治理的辅助与补充,将以基金会为主导,通过促进社区成员的沟通与交流,推进整个 KuChain 社区和生态的发展为核心目标,基金会行使的职能包括且不限于,对 KuChain 社区成员进行教育引导,引入具有交付能力的研发团队,孵化有潜力的应用项目,实施链下激励等。
## 经济模型
KuChain 的原生通证为<mark> KCS</mark>,简称「KCS」,发行总量为 2 亿,是基于 KuChain 发行的的区块链数字资产,是治理权益、网络使用权益的集合。
### 治理价值
验证人的收益取决于以下因素:
- 验证人打包区块获得的共识比例,以 2/3 ~ 3/3 的节点投票结果为范围,决定验证人 2% ~ 5% 的收益加成?
- 区块的收益中会有 20% 的基础收益分配给当前产块的节点
- 剩余的 80% 会扣掉节点自己设置的抵押手续费率分给投票给节点的 KCS 委托人
- 持币用户所获得的收益按照其抵押在节点中的 KCS 占比分配
当网络中的资产抵押率在 1% ~ 67% 时,整个网络的抵押收益率为 13% ~ 5% ,当网络抵押率超过 67% 时,抵押收益率将维持在 5% 左右,整个收益按照每个区块计算并发放。
### 应用价值
### 网络手续费
<mark>需要数与提供列表,团队商定</mark>
## 产品支持
### 区块浏览器
### 轻钱包
### 治理工具
## 路线图
## 总结