现有市场存在的去中心化网络的隐私保护技术,并没有跟去中心化应用相结合
匿名币的原理
现有市场存在的去中心化网络的隐私保护技术,并没有跟去中心化应用相结合,尤其是没有对智能合约的执行进行隐私保护。在智能合约中执行的动作序列,通过网络传播和/或记录在区块链上,是公开可见的。在图灵完备的区块链网络中,AMC的设计,在满足系统能力需求的同时,还必须满足几个基本的原则。
不可追踪性,区块链网络中的每一笔交易都具有输入和输出,如此一来,就构建了一个交易的有向无环图,在这个图上可以跟踪所有的交易流向,所有的交易序列都能被串联起来,并以此溯源。AMC的设计中要将两个交易之间的链接断开,使攻击无法进行。
不可关联性,区块链网络中每个用户都有自己的收款地址,一旦这个地址跟真实的用户身份关联,那么,在网络中这个地址发生的所有交易,都能关联到这个身份上,该地址一切的行为都暴露无疑。即使用户可以创建新的假名公钥以增加其匿名性,每个假名公钥的所有交易和余额的值都是公开可见的。AMC通过加密技术手段使收款地址无法被关联。
抗统计分析,真实用户的行为具有统计特点,如果区块链网络中的交易数据之间具有反应这样统计特点的关联性,通过对区块链数据的统计分析,就能够一定几率推测出这些地址发生的交易是属于某个特定用户的行为。即使是采用环签名,在面临有作恶的环成员或者节点的时候,抵抗统计分析的能力将会下降。AMC需要通过技术手段将地址以及地址之间的关系完全隐藏。
实用性原则,AMC在对交易数据进行隐藏的同时,并不会一股脑的将所有的信息都纳入范围内,这样做是不经济并且运行效率低下的。AMC会兼顾用户已有的使用习惯和痛点,进行阶段性研发。
可选的审计方案,对于某些较为复杂的商业应用领域,用户可能需要有一个完全信用的第三方对他发生的所有交易进行财务方面的审计,这时,他应该可以做出选择,决定是否绐予第三方一个跟踪他所有交易具体信息的能力。
可实现的方法
在第一期的计划中,AMC通过非交互零知识证明(NIZK),将交易体系的输入和输出以及交易细节完全隐藏起来,除了交易双方,其他任何人对这些隐藏细节完全是不可见的。同时,因为考虑到线上运行智能合约以及公开合约发行资产总数具有普适性的适用性,AMC会保留链上运行的智能合约,将智能合约所产生的资产与AMC本身的交易体系融合,以此来实现智能合约所产生资产的隐私性。
在第二期的计划中,对于具有隐藏合约发行资产总数的需求,我们将在线上运行智能合约内部提供一种名为隐匿数据的隐藏结构,同时只在链下对这种隐匿数据进行计算。以此来实现隐藏合约发行资产总数的功能。
在第三期的计划中,我们会采用更为先进的共识机制,提升AMC网络的吞吐量。同时,对于具有隐藏合约内部计算规则的需求,我们会将合约的运行分解为线下计算和线上验证两个步骤,线下计算完全了解运算规则和数据,并给出运算后的加密结果,当这个结果提交到线上时,线上节点只会对结果进行有效性验证,以确定其中包含的数据是否符合运算规则,但节点并不知道这些数据和运算规则的详细信息。
账户系统(Account System)
账户系统分为两个种类:用户账户和合约账户。用户账户是用户选定一个32byte的Seed, 而合约账户根据用户安装智能合约的环境产生一个64byte的地址,两者都是系统唯一,不可重复的。
用户账户可以产生一个64byte的私钥SK和一个64byte的公钥FK,该公钥是用户的付款地址。在安装或调用智能合约时,钱包会根据当前情况生成一个暂存地址尸灼,这个暂存地址无法用任何方式关联到用户的私钥和公钥,并且只会使用一次。
在智能合约安装的时候,钱包会根据当前情况,将暂存地址转为64byte的智能合约地址 (CADDR)。当节点收到地址时,需要确保智能合约地址之前没有出现过。
通用隐私交易
在AMC内部,普通交易中的数据都是加密的,非交易双方不能得知来源、去向、资产种类、金额等细节。系统在交易处理时并不区分智能合约产生的资产和AMC本身的资产。
线上智能合约
AMC的通用智能合约可以进行公开计算,制定对各种资产的统计方案、处置规则、公示规则,但输入输出信息都必须通过暂存地址与用户的真实身份隔离。
AMC智能合约兼容以太坊智能合约指令,也就是说以太坊大部分的智能合约可以不修改就在AMC上运行。
线上隐私资产
智能合约通过调用线上隐私资产发行方法发行的资产,资产总数量公开,并具有与AMC币等同的交易属性,可以通过通用隐私交易进行处理。
线下隐私资产
用户通过调用线下隐私资产发行方法发行的资产,资产总数量不公开,具有与AMC币等同的交易属性,可以通过通用隐私交易进行处理。
线下智能合约
AMC的线下智能合约只在用户机器上运行,计算规则只对部分用户可见,共识对运行结果的正确性进行验证。