CN111401875B - 基于账户模型的区块链转账方法及装置 - Google Patents
基于账户模型的区块链转账方法及装置 Download PDFInfo
- Publication number
- CN111401875B CN111401875B CN202010479988.XA CN202010479988A CN111401875B CN 111401875 B CN111401875 B CN 111401875B CN 202010479988 A CN202010479988 A CN 202010479988A CN 111401875 B CN111401875 B CN 111401875B
- Authority
- CN
- China
- Prior art keywords
- balance
- remittance
- transaction
- account
- homomorphic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q20/102—Bill distribution or payments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本说明书提供一种基于账户模型的区块链转账方法及装置;该方法包括:汇出方设备从第一有效余额列表中确定出与多个交易额分别对应的目标余额同态密文;针对多个交易额创建按照预设的汇出顺序依次排列的多笔汇出交易,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明指定交易额非负且指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息;向区块链网络提交多笔汇出交易,以指示区块链网络中的区块链节点按照汇出顺序依次对各个汇出交易实施汇出操作,包括:在确定任一汇出交易中的范围证明通过验证的情况下,根据任一汇出交易中的交易额同态密文分别更新汇出方区块链账户和相应的汇入方区块链账户。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于账户模型的区块链转账方法及装置。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于账户模型的区块链转账方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种基于账户模型的区块链转账方法,包括:
汇出方设备从汇出方区块链账户的第一有效余额列表中确定出与多个交易额分别对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述汇出方设备针对所述多个交易额创建相应的多笔汇出交易,且所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额;
所述汇出方设备向区块链网络中的区块链节点提交所述多笔汇出交易,以指示所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第二方面,提出了一种基于账户模型的区块链转账方法,包括:
区块链网络中的区块链节点接收汇出方设备提交的针对多个交易额分别创建的多笔汇出交易,所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额,所述指定交易额对应的目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第三方面,提出了一种基于账户模型的区块链转账方法,包括:
汇出方设备从汇出方区块链账户的第一有效余额列表中确定与当前交易额对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述汇出方设备创建汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于所述目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息;
所述汇出方设备向区块链网络中的区块链节点提交所述汇出交易,以指示所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第四方面,提出了一种基于账户模型的区块链转账方法,包括:
区块链网络中的区块链节点接收汇出方设备提交的汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息,所述目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第五方面,提出了一种基于账户模型的区块链转账装置,包括:
确定单元,使汇出方设备从汇出方区块链账户的第一有效余额列表中确定出与多个交易额分别对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
创建单元,使所述汇出方设备针对所述多个交易额创建相应的多笔汇出交易,且所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额;
提交单元,使所述汇出方设备向区块链网络中的区块链节点提交所述多笔汇出交易,以指示所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第六方面,提出了一种基于账户模型的区块链转账装置,包括:
接收单元,使区块链网络中的区块链节点接收汇出方设备提交的针对多个交易额分别创建的多笔汇出交易,所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额,所述指定交易额对应的目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
汇出单元,使所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第七方面,提出了一种基于账户模型的区块链转账装置,包括:
确定单元,使汇出方设备从汇出方区块链账户的第一有效余额列表中确定与当前交易额对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
创建单元,使所述汇出方设备创建汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于所述目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息;
提交单元,使所述汇出方设备向区块链网络中的区块链节点提交所述汇出交易,以指示所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第八方面,提出了一种基于账户模型的区块链转账装置,包括:
接收单元,使区块链网络中的区块链节点接收汇出方设备提交的汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息,所述目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
汇出单元,使所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
根据本说明书一个或多个实施例的第九方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面、第二方面、第三方面和第四方面中任一所述的方法。
根据本说明书一个或多个实施例的第十方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面、第二方面、第三方面和第四方面中任一所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种汇出方设备侧的基于账户模型的区块链转账方法的流程图。
图2是一示例性实施例提供的一种区块链节点侧的基于账户模型的区块链转账方法的流程图。
图3是一示例性实施例提供的一种基于账户模型的区块链转账方法的交互图。
图4是一示例性实施例提供的一种区块链账户模型的示意图。
图5是一示例性实施例提供的一种交易模型的示意图。
图6是一示例性实施例提供的一种基于账户模型的区块链转账方法的示意图。
图7是一示例性实施例提供的另一种汇出方设备侧的基于账户模型的区块链转账方法的流程图。
图8是一示例性实施例提供的另一种区块链节点侧的基于账户模型的区块链转账方法的流程图。
图9是一示例性实施例提供的另一种基于账户模型的区块链转账方法的交互图。
图10-11是一示例性实施例提供的另一种基于账户模型的区块链转账方法的示意图。
图12是一示例性实施例提供的一种设备的结构示意图。
图13是一示例性实施例提供的一种汇出方设备侧的基于账户模型的区块链转账装置的框图。
图14是一示例性实施例提供的一种区块链节点侧的基于账户模型的区块链转账装置的框图。
图15是一示例性实施例提供的另一种汇出方设备侧的基于账户模型的区块链转账装置的框图。
图16是一示例性实施例提供的另一种区块链节点侧的基于账户模型的区块链转账装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链是一种防篡改的、共享的数字化账本,用于记录公有或私有对等网络中的交易。在区块链网站中,账本分发给各个成员节点,各个成员节点在区块中永久记录网络中发生的资产交易的历史记录。需要说明的是,接入区块链的用户在区块链上发起的请求的类型,具体可以是指传统的区块链中所采用的交易(transaction)。当然,接入区块链的用户在区块链上发起的请求的类型,具体也可以是交易以外的,其它形式的具有标准的数据结构的指令、消息等,本说明书一个或多个实施例并不进行特别限定。在以下的各实施例中,将以接入区块链的用户在区块链上发起的请求为交易为例进行说明。
区块链网络中通常采用两种交易模型,即UTXO(Unspent Transaction Output,未花费的交易输出)模型和账户模型。UTXO模型的典型应用场景为比特币区块链,该模型下的链上资产以交易输出的形式存在,当一笔交易存在未花费的交易输出时,该未花费的交易输出归私钥持有者所有;在使用时,可以将一个或多个未花费的交易输出作为输入,并指定一个或多个输出,从而形成新的一笔或多笔未花费的交易输出。虽然UTXO模型被多种区块链网络所采用,但对智能合约的支持很弱,从而对应用场景造成了较大限制。而账户模型的典型应用场景为以太坊区块链,该模型下通过创建账户,将账户持有的链上资产表现为账户地址对应的余额,每笔转账交易可以将资产从一个账户地址转移至另一个账户地址,且交易的金额直接更新至账户地址对应的余额。相比于UTXO模型而言,账户模型能够支持完备的智能合约功能,具有较好的场景扩展性。
由于区块链的账本是完全公开的,区块链的账本本身并无隐私保护功能,需通过额外的技术手段来保护资产交易的隐私。出于交易隐私保护的目的,相关技术中提出了对区块链交易的改进。在UTXO模型下,可以通过同态加密或同态承诺技术对交易金额进行保护,以及利用范围证明技术(Range proof)保证交易的输出非负等。而在账户模型下,可以通过同态加密或同态承诺技术对交易金额进行保护,以及利用范围证明技术保证交易额非负且账户余额足够支付。
在UTXO模型下,将一个或多个交易输出作为一笔转账交易的输入,并在转账完成后形成一个或多个新的交易输出。可见,一个交易输出只会在一笔转账交易中被花费,无法被多笔转账交易所花费,使得针对一笔转账交易生成的范围证明仅与该转账交易输入相关(两者为绑定关系),与其他转账交易的输入无关,不会受到其他转账交易的干扰。因此,UTXO模型天然地具有高的交易并发性。而在账户模型下,每笔交易的输入均为账户的余额,每笔交易的范围证明都与账户的余额相关,而账户的余额在每笔交易后都会发生更新,使得同一账户下的汇出交易和汇入交易需要按顺序串行执行。换言之,某一区块链账户发起汇出交易到该汇出交易被执行的期间,如果有针对该区块链账户的汇入交易,那么因为汇出交易的范围证明依赖的旧余额和当前的新余额不同,将导致该笔汇出交易不合法而被共识节点拒绝执行。因此,在账户模型下使用带有范围证明的隐私保护技术时,用户需要对所有汇出和汇入这两类交易进行严格的时序管理,会严重地阻碍交易的吞吐量,导致实用性较低。
为了解决在账户模型下保证账户隐私时汇入与汇出两种交易之间的并发性问题,确保对智能合约功能的充分支持,本说明书针对相关技术中的账户模型下的账户结构以及相应的转账方式提出了改进,以使其能够适应于高吞吐量的并发交易。
图1是一示例性实施例提供的一种汇入方设备侧的基于账户模型的区块链转账方法的流程图。如图1所示,该方法应用于汇出方设备,可以包括以下步骤:
步骤102,汇出方设备从汇出方区块链账户的第一有效余额列表中确定与当前交易额对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文。
在本实施例中,出于对区块链账户模型下隐私保护的考虑,可以统一通过具有同态特性的承诺算法(Commitment)或者同态加密(Homomorphic Encryption)算法将区块链账户的明文余额转换为相应的同态密文,使得在区块链上仅记录该同态密文,只有密文中的秘密持有者能够对该同态密文进行解密。为了方便描述,以记号HE()表示同态承诺/加密算法,对于明文t,其密文形式为HE(t)。同态承诺/加密是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果,即对密文直接进行处理,与对明文进行处理后再对处理结果加密得到的结果相同。以加法同态为例,HE(t1) + HE(t2) = HE(t1+t2)。同态承诺算法包括Pedersen承诺等,同态加密算法包括Paillier 算法、Gentry算法、Okamoto–Uchiyama 同态加密和Boneh-Goh-Nissim同态加密等等;当然,本说明书并不对所采用的同态承诺算法和同态加密算法进行限制。
在本实施例中,针对各个区块链账户维护有相应的有效余额列表(availablebalance list),有效余额列表用于记录对相应的区块链账户实施汇入操作(即从其他区块链账户向该区块链账户汇入交易额)而形成的各个历史账户余额对应的历史余额同态密文。其中,针对区块链账户实施的汇入操作将导致该区块链账户的账户余额发生变化(实际为账户余额增加),而该区块链账户的有效余额列表正是用于记录经实施这些汇入操作后得到的各个账户余额(即以同态密文形式记录的各个历史账户余额)。进一步的,若在此基础上后续又对该区块链账户实施了汇出操作(即从该区块链账户向其他区块链账户汇入交易额),该汇出操作将导致该区块链账户的账户余额发生变化(实际为账户余额减少),则将有效余额列表中记录的各个历史余额同态密文分别扣除交易额对应的交易额同态密文。可见,对于将有效余额列表中记录的各个历史余额同态密文分别扣除交易额同态密文后得到的余额同态密文,这些余额同态密文对应的账户余额仍然均为真实有效、实际可用的账户余额。而在后续对该区块链账户实施汇入操作时,在该区块链账户的有效余额列表中新增最新账户余额对应的最新余额同态密文即可。因此,在需要对该区块链账户实施汇出操作时,有效余额列表中任意对应的历史账户余额不小于当前交易额的历史余额同态密文均可以用来证明该区块链账户的余额足够支付本次需要汇出的交易额。也即,汇出方设备在汇出方区块链账户的第一有效余额列表中选取目标余额同态密文时,可选取任意所对应的历史账户余额不小于当前交易额的历史余额同态密文,从而将选取出的历史余额同态密文作为目标余额同态密文。
举例而言,为了便于描述,下面以明文形式解释维护有效余额列表的过程,实际实施本说明书的技术方案时,有效余额列表中的历史账户余额均以密文的形式记录。假定账户A的有效余额列表中记录的历史账户余额为5元。后续,对账户A依次实施了3次汇入操作,分别向账户A汇入了3元、5元、8元,那么账户A的有效余额列表依次记录有以下历史账户余额:5元、8元、13元、21元。在此基础上,假定从账户A向账户B汇入1元,则账户A的有效余额列表记录的历史账户余额更新为:4元、7元、12元、20元。进一步的,假定从其他账户向账户A汇入2元,则账户A的有效余额列表记录的历史账户余额更新为:4元、7元、12元、20元、22元。在该情况下,假定此时需要汇出的交易额为5元,则可选取有效余额列表中任一不小于5元的历史账户余额对应的历史余额同态密文作为目标余额同态密文,即选取“7元、12元、20元、22元”中的任一历史余额同态密文作为目标余额同态密文。当然,为避免有效余额列表记录的数据量过于庞大,可限制有效余额列表记录的历史余额同态密文的数量,或者限制有效余额列表存储的数据量。当有效余额列表超出限制时,按照时间先后顺序,优先删除相对较早的历史余额同态密文。
在区块链网络中,区块链账户可以包括外部账户和合约账户等。外部账户通常为用户(个人或机构)所有,而合约账户则对应于部署在区块链中的智能合约。各类账户的结构都类似,例如可以包含Nonce字段、Balance字段、Code字段和Storage字段等。每个账户的Nonce字段的取值从0开始,且Nonce字段的取值随相应账户所发起的交易而依次递增,使得该账户发起的每一交易所含Nonce取值均不相同,从而可避免重放攻击。Balance字段用于存放余额。Code字段用于存放智能合约的代码,因而外部账户的Code字段通常为空。Storage字段用于存放账户在状态树中对应节点处的取值。
在一种情况下,可在区块链网络中预先部署一智能合约,该智能合约对应的合约账户用于记录和维护各个区块链账户的有效余额列表,即各个区块链账户的有效余额列表被通过预先部署的智能合约来记录和维护。比如,可将有效余额列表存放在合约账户的Storage字段中,当然,本说明书并不对合约账户存放有效余额列表的字段进行限制。在另一种情况下,各个有效余额列表被记录和维护于相应的区块链账户中,即针对各个区块链网络的用户,将各个用户的有效余额列表记录和维护在各自的外部账户中。比如,可对外部账户的Balance字段的结构进行改进,将Balance字段进一步划分为包含账户余额同态密文(即用于记录最新账户余额对应的最新余额同态密文)和有效余额列表。或者,Balance字段用于存放账户余额同态密文,额外添加其他字段用于存放相应的有效余额列表。当然,还可采用其他任意增加或改进字段的方式来存放账户余额同态密文和有效余额列表,本说明书并不对此进行限制。
步骤104,所述汇出方设备创建汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于所述目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息。
在本实施例中,范围证明技术是密码学领域的一种安全的证明协议,可用于证明一个数字在某一合理区间并且不泄露该数字的具体数值等信息。例如,Borromean环签名方案、Bulletproof方案、zkSNARK等零知识证明技术均可用于范围证明。因此,基于目标余额同态密文为密文形式的特点,可利用范围证明技术保证当前交易额非负且账户余额足够支付。具体而言,可生成用于证明当前交易额非负且步骤102中确定出的目标余额同态密文对应的历史账户余额不小于当前交易额的范围证明,从而为后续区块链节点验证本次转账操作是否合法(汇出方的区块链账户中的账户余额是否足够支付当前交易额)提供条件,进而在合法的情况下实施从汇出方区块链账户向汇入方区块链账户转账当前交易额的操作。
步骤106,所述汇出方设备向区块链网络中的区块链节点提交所述汇出交易,以指示所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
在本实施例中,由于同态密文具有同态特性,可在密文形式下进行加减法运算,因此在实施汇出操作时,可直接对各个同态密文形式的账户余额进行运算以进行更新。其中,账户余额同态密文为区块链账户的账户余额(即最新的账户余额)的同态密文形式,而由上述记录和维护有效余额列表的方式可知,账户余额同态密文和有效余额列表中的最新余额同态密文等值。
在本实施例中,汇出方设备在创建汇出交易时,还可在汇出交易中存放目标余额同态密文的标识,该标识可用于在有效余额列表中查询到相应的历史余额同态密文(目标余额同态密文从有效余额列表中选取,因此目标余额同态密文也属于历史余额同态密文)。基于上述在汇出交易中存放标识的方式,汇出交易中的范围证明可由区块链网络中的区块链节点根据第一有效余额列表中与汇出交易中标识对应的历史余额同态密文和当前交易额进行验证。具体而言,区块链网络中的区块链节点在接收到汇出交易后,可在汇出方区块链账户的第一有效余额列表中确定与汇出交易中的标识对应的历史余额同态密文(即汇出方设备选取的目标余额同态密文),从而根据确定出的历史余额同态密文和汇出交易中的交易额同态密文,对汇出交易中的范围证明进行验证。
其中,在对汇出交易中的范围证明进行验证时,若第一有效余额列表中未记录与汇出交易中标识对应的历史余额同态密文,则说明汇出方设备选取的目标余额同态密文并非第一有效余额列表中记录的历史余额同态密文,即目标余额同态密文对应的历史账户余额并非真实有效、实际可用,那么汇出交易中用于证明目标余额同态密文对应的历史账户余额足够支付的范围证明也就随之无法通过验证。因此,第一有效余额列表中记录有与汇出交易中标识对应的历史余额同态密文可被区块链网络中的区块链节点作为该汇出交易中的范围证明通过验证的前提条件。
承接于上述通过智能合约来记录和维护有效余额列表的情况,可由区块链节点调用该智能合约来执行验证范围证明的操作。比如,可在智能合约中定义验证代码,该验证代码用于确定与汇出交易中标识对应的历史余额同态密文是否记录于第一有效余额列表中,并在确定出第一有效余额列表中记录有与汇出交易中标识对应的历史余额同态密文的情况下,进一步根据该历史余额同态密文和汇出交易中的交易额同态密文对范围证明进行验证。
承接于上述通过区块链账户来记录和维护有效余额列表的情况,可由区块链节点执行链代码来实施验证范围证明的操作。比如,可在链代码中定义验证代码,该验证代码用于确定与汇出交易中标识对应的历史余额同态密文是否记录于第一有效余额列表中,并在确定出第一有效余额列表中记录有与汇出交易中标识对应的历史余额同态密文的情况下,进一步根据该历史余额同态密文和汇出交易中的交易额同态密文对范围证明进行验证。
在本实施例中,在针对某一区块链账户不断实施汇入操作的过程中,该区块链账户的有效余额列表中记录的历史余额同态密文会随之不断叠加更新,即对于有效余额列表中形成时刻相对较晚的历史余额同态密文,其表示的数值大于形成时刻相对较早的历史余额同态密文表示的数值。而在对汇出方区块链账户实施汇出操作的过程中,需要将第一有效余额列表中记录的各个历史余额同态密文分别扣除汇出交易中的交易额同态密文,那么形成时刻早于目标余额同态密文(对应的历史账户余额不小于当前交易额)的历史余额同态密文对应的历史账户余额可能小于当前交易额,导致对这些历史余额同态密文实施扣除操作后,这些历史余额同态密文对应的历史账户余额可能为负数,无法作为真实有效、实际可用的账户余额以用于后续向其他区块链账户汇入交易额。因此,若选取这些对应的历史账户余额为负数的历史余额同态密文作为目标余额同态密文,则会导致转账失败。可见,有效余额列表中对应的历史账户余额为负数的历史余额同态密文属于无效的数据,而这些无效的数据增加了有效余额列表的维护成本。针对该情况,在记录和维护本实施中的第一有效余额列表时,第一有效余额列表中形成时刻早于与汇出交易中标识对应的历史余额同态密文的历史余额同态密文可被区块链网络中的区块链节点删除。比如,在实施上述步骤106中针对第一有效余额列表中各个历史余额同态密文的扣除操作之前,先删除形成时刻早于与汇出交易中标识对应的历史余额同态密文的历史余额同态密文,然后再实施该扣除操作。通过上述删除历史余额同态密文的方式,能够消除有效余额列表中无效的历史余额同态密文,不仅可以避免因选取到无效的目标余额同态密文而导致转账失败的情况,还优化了对有效余额列表的维护方式,节约有效余额列表的空间。
在本实施例中,汇出方设备在创建汇出交易时,还可对汇出交易进行签名得到汇出方签名,即汇出交易中还包含有汇出方设备针对汇出交易的汇出方签名。那么,汇出方签名通过验签可被区块链节点作为更新汇出方区块链账户和汇入方区块链账户的前提条件。换言之,区块链节点只有在确认汇出交易由该汇出方签名的情况下才更新汇出方区块链账户和汇入方区块链账户,从而防止其他设备假冒该汇出方设备实施针对该汇出方区块链账户的汇出操作,有利于提高转账的安全性。需要说明的是,上述更新区块链账户(包括汇出方区块链账户和汇入方区块链账户)的操作包括更新区块链账户的账户余额同态密文和更新有效余额列表。
在本说明书的转账方案中,针对各个区块链账户维护有相应的有效余额列表,并在汇出交易中标明本次汇出操作依赖的是汇出方区块链账户的哪一个历史余额同态密文(即目标余额同态密文)。当实施针对汇出方区块链账户的汇入操作时,有效余额列表照常新增相应的历史余额同态密文,而在有效余额列表中新增历史余额同态密文的操作并不会影响到已经创建但尚未被执行的汇出交易。那么,区块链节点在执行汇出交易(即响应于汇出交易以实施汇出操作)时,只要创建该汇出交易时依赖的历史余额同态密文仍然记录在汇出方区块链账户的有效余额列表中,说明汇出方区块链账户的余额足够支付当前交易额,执行该笔汇出交易也就不会受到针对汇出方区块链账户的汇入操作的影响。可见,本说明书的转账方式有效解耦了汇出操作和汇入操作之间的关系,解决了这两类操作之间的并发问题。换言之,在汇出方设备创建汇出交易到区块链节点执行该汇出交易的过程中,区块链节点仍然可以执行接收到的针对同一区块链账户的汇入交易,即同一账户下的汇出交易和汇入交易无需按照时序串行执行,有利于提高交易的吞吐量。
同时,相比于将区块链中的余额做不同的拆分以解耦汇出操作和汇入操作之间的关系,区块链账户的资金不会被分散在拆分得到的各个子余额上,执行转账操作的复杂度较低,不会影响到转账效率和资金的利用率。
对应于上述汇出方设备侧的实施例,本说明书还提出了区块链节点侧的实施例,在汇出方设备侧实施例中所涉及的描述同样可以适用于区块链节点侧的实施例,下文中不再对此进行赘述。
相应的,图2是一示例性实施例提供的一种区块链节点侧的基于账户模型的区块链转账方法的流程图。如图2所示,该方法应用于区块链节点,可以包括以下步骤:
步骤202,区块链网络中的区块链节点接收汇出方设备提交的汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息,所述目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文。
步骤204,所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
如前所述,所述汇出交易中还包含所述目标余额同态密文的标识;所述区块链网络中的区块链节点先确定所述第一有效余额列表中与所述标识对应的历史余额同态密文,再根据确定出的历史余额同态密文和所述交易额同态密文,对所述汇出交易中的范围证明进行验证。
如前所述,所述区块链网络中的区块链节点将所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文作为所述汇出交易中的范围证明通过验证的前提条件。
如前所述,所述区块链网络中的区块链节点将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
如前所述,所述汇出交易中还包含所述汇出方设备针对所述汇出交易的汇出方签名;所述区块链网络中的区块链节点将所述汇出方签名通过验签作为更新所述汇出方区块链账户和所述汇入方区块链账户的前提条件。
如前所述,所述区块链网络中的区块链节点通过预先部署的智能合约来记录和维护各个区块链账户的有效余额列表;或者,所述区块链网络中的区块链节点将各个有效余额列表记录和维护于相应的区块链账户中。
为了便于理解,下面以作为汇出方的用户X(账户地址为X)、作为汇入方的用户Y(账户地址为Y)为例,对基于账户模型的区块链转账过程进行详细描述。图3是一示例性实施例提供的一种基于账户模型的区块链转账方法的交互图;如图3所示,汇出方设备和区块链节点之间的交互过程可以包括以下步骤:
步骤302,汇出方设备确定当前交易额t。
在本实施例中,汇出方是指转账交易中对款项等资源进行汇出的角色,相应地汇入方是指转账交易中对款项等资源进行接收的角色。例如,用户X向用户Y转账,那么用户X使用的用户设备可以被配置为汇出方设备,而用户Y使用的用户设备可以被配置为汇入方设备。
在本实施例中,在起草转账交易时,当前交易额t可由汇出方与汇入方之间进行协商。当然,汇出方也可以自行确定当前交易额t,由汇入方在后续转账完成后自行予以确认。
步骤304,汇出方设备从账户X的有效余额列表中选取目标余额同态密文HE(x_i)。
在本实施例中,以通过各个用户的外部账户来记录和维护有效余额列表为例进行说明,而通过合约账户记录和维护有效余额列表的方式与此类似。
区块链的账户模型中包含“账户余额”和“有效余额列表”,可统一采用加法同态的承诺或其他加法同态加密算法,记为HE( )。如图4所示,以账户X为例,账户余额同态密文为HE(x),有效余额列表为:[HE(x_0), HE(x_1), HE(x_2)…, HE(x_m)];其中,HE(x_m)=HE(x)。汇出方设备可获取汇出方区块链账户的有效余额列表,从中选取所对应的历史账户余额x_i不小于当前交易额t的历史余额同态密文HE(x_i)作为目标余额同态密文。
在本实施例中,以账户X提交的汇出交易为例,本说明书中的交易模型如图5所示,包含当前交易额t对应的交易额同态密文HE(t)、汇出方设备选取的目标余额同态密文HE(x_i)、“0<=t<=x_i”的范围证明、汇入方(即账户Y)的账户地址Y和汇出方签名。
步骤306,汇出方设备计算当前交易额t的交易额同态密文HE(t)。
步骤308,汇出方设备生成0<=t<=x_i的范围证明RP。
在本实施例中,在账户X的有效余额列表中选取目标余额同态密文时,可选取任意所对应的历史账户余额不小于当前交易额t的历史余额同态密文作为目标余额同态密文。换言之,为了确保转账交易顺利完成,汇出方设备需要确保当前交易额t和选取的目标历史余额同态密文对应的历史账户余额x_i满足条件“0<=t<=x_i”。而范围证明技术可以使得区块链节点在密文状态下验证交易是否符合预设条件,譬如本说明书中可以采用Bulletproofs方案、Borromean环签名方案或zkSNARK等零知识证明技术实现,本说明书并不对此进行限制。汇出方设备可以利用范围证明技术生成“0<=t<=x_i”的范围证明RP,以供后续过程中由区块链节点进行验证是否满足条件0<=t<=x_i。
步骤310,汇出方设备对交易内容(HE(x_i),HE(t),RP;Y)进行签名得到SigX。
在本实施例中,该汇出方设备可基于上述交易内容(HE(x_i),HE(t),RP;Y)创建汇出交易,并利用汇出方设备私钥对交易内容进行签名得到SigX。其中,汇出交易中可记录目标余额同态密文HE(x_i)的ID,以由区块链节点后续在汇出方区块链账户的有效余额列表中查询是否记录有与该ID对应的历史余额同态密文,即确定汇出方区块链账户的有效余额列表中是否记录有目标余额同态密文HE(x_i)。
步骤312,汇出方设备向区块链提交汇出交易。
在本实施例中,汇出方设备被配置为区块链的客户端,可以将汇出交易提交至区块链网络中的某一区块链节点,并进而被传输至区块链网络中的所有区块链节点,并由各个区块链节点分别对该汇出交易进行验证,以在验证通过时执行转账操作、在验证未通过时拒绝转账。
步骤314,区块链节点检查汇出交易是否执行过。
在本实施例中,此处的区块链节点可以表示区块链网络中的任意一个区块链节点,即区块链网络中的每一区块链节点均会收到上述汇出交易,并通过步骤314-320等实施验证等操作。
在本实施例中,区块链节点在收到上述汇出交易后,可以利用相关技术中的防双花或防重放机制,验证该汇出交易是否已经执行过;如果已经执行过,可以拒绝执行该汇出交易,否则转入后续步骤。
步骤316,区块链节点验证签名SigX。
在本实施例中,区块链节点可采用汇出方的公钥对汇出交易中包含的签名SigX验签。若针对SigX的验签通过,则转入后续步骤;否则,拒绝执行该汇出交易。
步骤318,区块链节点验证HE(x_i)。
在本实施例中,由上述维护有效余额列表的方式可知,有效余额列表中任意对应的历史账户余额不小于交易额的历史余额同态密文均可以用来证明该区块链账户的余额足够支付本次需要汇出的金额(即当前交易额)。因此,区块链节点需要验证汇出方设备所选取的HE(x_i)(汇出交易中ID对应的历史余额同态密文,即目标余额同态密文)是否记录在账户X的有效余额列表中。若HE(x_i)记录在账户X的有效余额列表中,则转入后续步骤;否则,拒绝执行该汇出交易。
步骤320,区块链节点验证范围证明RP。
在本实施例中,区块链节点在获取到账户X的有效余额列表中与汇出交易中ID对应的历史余额同态密文后,可基于范围证明技术,根据获取到的历史余额同态密文和汇出交易中的交易额同态密文H E(t),对该汇出交易包含的范围证明RP进行验证,以确定是否满足0<=t<=x_i。若不满足,可以拒绝执行该汇出交易,否则转入后续步骤。
需要说明的是,上述步骤314-320的执行顺序仅为举例,该执行顺序可根据实际需求灵活调整。
步骤322,区块链节点更新账户X、账户Y的账户余额同态密文。
步骤324,区块链节点将账户X的有效余额列表中记录的各个历史余额同态密文分别扣除交易额同态密文HE(t),在账户Y的有效余额列表中添加账户Y的最新余额同态密文。
步骤326,汇出方设备获取转账结果。
下面结合图6对转账过程中更新账户X和账户Y的操作进行说明。相比于创建汇出交易时账户X的账户状态(即图4所示的账户状态),区块链节点在验证该笔汇出交易时,账户X的账户状态有可能已经发生了变化。比如,可能在创建汇出交易之后,成功针对账户X实施了其它的汇出操作,或者成功针对账户X实施了汇入操作。
如图6所示,假设当前账户X和账户Y的账户状态分别为:
账户X:
账户余额同态密文:HE(x’);
有效余额列表:[HE(x_0), HE(x_1), HE(x_2)……HE(x_m’)];
其中,HE(x_m’)=HE(x’)。
账户Y:
账户余额同态密文:HE(y);
有效余额列表:[HE(y_0), HE(y_1), HE(y_2) ……HE(y_n)];
其中,HE(y_n)=HE(y)。
那么,在上述验证操作均通过后,账户X和账户Y的账户状态分别更新为:
账户X:
账户余额同态密文:HE(x’)-HE(t);
有效余额列表:
[HE(x_0)-HE(t),HE(x_1)-HE(t),HE(x_2)-HE(t)……HE(x_m’)-HE(t)];
账户Y:
账户余额同态密文:HE(y)+HE(t);
有效余额列表:
[HE(y_0), HE(y_1), HE(y_2)……HE(y_n),HE(y_{n+1})];
其中,HE(y_{n+1})=HE(y)+HE(t)。
需要注意的是,在将账户X的有效余额列表中记录的各个历史余额同态密文分别扣除交易额同态密文HE(t)后,可能存在扣除后得到的余额同态密文对应的账户余额为负数的情况,尤其是在交易额t较大的情况下,扣除后可能出现大量为负数的账户余额,而为负数的账户余额为无效余额,并且为负数的账户余额同样占用了有效余额列表的存储空间。同时,为了保证转账顺利进行,汇出方设备选取的目标余额同态密文对应的历史账户余额应不小于当前交易额,而有效余额列表中记录的各个历史余额同态密文按照形成时刻的时间先后顺序排列,且对应的历史账户余额的数值依次增大。那么,产生在目标余额同态密文HE(x_i)之前的历史余额同态密文在扣除交易额同态密文后,对应的历史账户余额很可能为负数。因此,区块链节点可将账户X的有效余额列表中排列在HE(x_i)之前的历史余额同态密文删除,从而避免上述为负数的账户余额占用大量历史有效余额列表的存储空间的问题。如图6所示,承接于上述举例,账户X的有效余额列表为:[HE(x_i)-HE(t)……HE(x_m’)-HE(t)]。
由上述实施例可见,通过针对各个区块链账户维护相应的有效余额列表,并在汇出交易中标明本次汇出操作依赖的是汇出方区块链账户的哪一个历史余额同态密文(即目标余额同态密文),当实施针对汇出方区块链账户的汇入操作时,有效余额列表照常新增相应的历史余额同态密文,而在有效余额列表中新增历史余额同态密文的操作并不会影响到已经创建但尚未被执行的汇出交易。那么,区块链节点在执行汇出交易(即响应于汇出交易以实施汇出操作)时,只要创建该汇出交易时依赖的历史余额同态密文仍然记录在汇出方区块链账户的有效余额列表中,说明汇出方区块链账户的余额足够支付当前交易额,执行该笔汇出交易也就不会受到针对汇出方区块链账户的汇入操作的影响。可见,本说明书的转账方式有效解耦了汇出操作和汇入操作之间的关系,解决了这两类操作之间的并发问题。换言之,在汇出方设备创建汇出交易到区块链节点执行该汇出交易的过程中,区块链节点仍然可以执行接收到的针对同一区块链账户的汇入交易,即同一账户下的汇出交易和汇入交易无需按照时序串行执行,有利于提高交易的吞吐量。
同时,相比于将区块链中的余额做不同的拆分以解耦汇出操作和汇入操作之间的关系,区块链账户的资金不会被分散在拆分得到的各个子余额上,执行转账操作的复杂度较低,不会影响到转账效率和资金的利用率。
在本说明书的技术方案中,还提供另一种基于账户模型的区块链转账。请参见图7,图7是一示例性实施例提供的另一种汇出方设备侧的基于账户模型的区块链转账方法的流程图。如图7所示,该方法应用于汇出方设备,可以包括以下步骤:
步骤702,汇出方设备从汇出方区块链账户的第一有效余额列表中确定出与多个交易额分别对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文。
在本实施例中,记录和维护有效余额列表的方式与上述图1-6所示实施例类似,在此不再赘述。与上述图1所示实施例不同的是,本实施例在需要从汇出方区块链账户向其他区块链账户汇出多笔交易额的情况下,无需等待在前一笔汇出交易完成后才能再创建以及发起一笔新的汇出交易,而是支持依次连续创建和提交多笔汇出交易,支持对汇出交易有高频需求的账户,解决了多笔汇出交易的并发问题。同时,与上述图1所示实施例同理,本实施例解耦了汇出操作和汇入操作之间的关系,解决了这两类操作之间的并发问题,同一账户下的汇出交易和汇入交易无需按照时序串行执行,有利于提高交易的吞吐量,并且也不会影响到转账效率和资金的利用率。下面对该情况下针对多个交易额分别选取对应的目标余额同态密文、生成范围证明和区块链节点执行各笔汇出交易的过程进行详细说明。
参考上述图1-6所示的实施例,在对某一区块链账户实施汇出操作时,该区块链账户的有效余额列表中记录的各个历史余额同态密文会被扣除相应的交易额同态密文,而有效余额列表中的历史余额同态密文可被选取出用来证明该区块链账户的余额足够支付本次需要汇出的交易额。因此,在面对需要按照汇出顺序依次连续发起多笔汇出交易(区块链节点在接收到该多笔汇出交易后,也按照该汇出顺序依次响应于各个汇出交易以实施汇出操作)的需求时,针对其中任意一笔汇出交易,区块链账户的当前有效余额列表中满足下列条件的历史账户余额(以同态密文的形式)均可用来证明该区块链账户的余额足够支付该笔汇出交易的交易额:数值不小于该笔汇出交易以及排列在该笔汇出交易之前所有汇出交易的交易额之和。换言之,当按照汇出顺序执行到该笔汇出交易时,满足上述条件的历史账户余额已经被扣除排列在该笔汇出交易之前的所有汇出交易的交易额之和,而该历史账户余额仍然足够支付该笔汇出交易的交易额,从而保证响应于该笔汇出交易的汇出操作顺利进行。因此,汇出方设备为了保证每笔汇出交易顺利执行,可按照上述条件在汇出方区块链账户的第一有效余额列表中依次选取出与多个交易额分别对应的目标余额同态密文。
举例而言,为了便于描述,下面以明文形式解释上述过程,实际实施本说明书的技术方案时,有效余额列表中的历史账户余额均以密文的形式记录。假定按照汇出顺序多个交易额依次为:3元、4元、7元、10元,有效余额列表中的历史账户余额依次为:4元、6元、13元、17元、25元、40元。那么,针对第一笔交易额3元,可选取有效余额列表中任一不小于3元的历史账户余额作为目标账户余额(即目标余额同态密文的明文形式),此时有效余额列表中的所有历史账户余额均不小于3元,因此均可作为目标账户余额;比如,选取4元作为目标账户余额。针对第二笔交易额4元,可选取有效余额列表中任一不小于7元(3元+4元)的历史账户余额作为目标账户余额,此时有效余额列表中的“13元、17元、25元、40元”可作为目标账户余额;比如,选取13元作为目标账户余额。针对第三笔交易额7元,可选取有效余额列表中任一不小于14元(3元+4元+7元)的历史账户余额作为目标账户余额,此时有效余额列表中的“17元、25元、40元”可作为目标账户余额;比如,选取17元作为目标账户余额。针对第四笔交易额10元,可选取有效余额列表中任一不小于24元(3元+4元+7元+10元)的历史账户余额作为目标账户余额,此时有效余额列表中的“25元、40元”可作为目标账户余额;比如,选取25元作为目标账户余额。
需要说明的是,在有效余额列表中选取各个交易额对应的目标余额同态密文时,可对同一历史余额同态密文进行多次选取,只要该历史余额同态密文对应的历史账户余额足够支付相应的交易额,就可保证转账顺利进行。也即,同一历史余额同态密文可同时作为多个交易额的目标余额同态密文。例如,针对第三笔交易额7元,可选取有效余额列表中的“25元”作为目标账户余额。同时,针对第四笔交易额10元,也可选取有效余额列表中的“25元”作为目标账户余额。或者,针对第三笔交易额7元和第四笔交易额10元,均可选取有效余额列表中的“40元”作为目标账户余额。
步骤704,所述汇出方设备针对所述多个交易额创建相应的多笔汇出交易,且所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额。
在本实施例中,针对与任一汇出交易的指定交易额对应的目标余额同态密文,在针对排列在该任一汇出交易之前的汇出交易实施汇出操作时,该目标余额同态密文也会被扣除相应的交易额同态密文(该目标余额同态密文在执行每笔汇出交易的过程中动态变化)。根据步骤704中对参考账户余额的定义,当轮到执行该任一汇出交易时(即还未执行该任一汇出交易,排列在该任一汇出交易之前的汇出交易均已执行完毕),由于在执行排列在该任一汇出交易之前的每个汇出交易时,目标余额同态密文均被扣除相应的交易额同态密文(被扣除的交易额同态密文之和便为累计交易额对应的同态密文),此时的目标余额同态密文对应的历史账户余额便为该任一汇出交易的交易额对应的参考账户余额。换言之,针对任一汇出交易所含交易额对应的参考账户余额,可通过对该交易额对应的目标账户余额扣除累计交易额得到,累计交易额为排列在该任一汇出交易之前的所有汇出交易的交易额之和。因此,针对任一汇出交易,可生成用于证明该任一汇出交易中包含的指定交易额非负且该指定交易额不大于对应的参考账户余额的范围证明,该范围证明通过验证便可说明汇出方区块链账户的账户余额足够支付该指定交易额。
承接于上述举例中的多笔交易额和相应选取的目标账户余额,第一笔交易额3元对应的参考账户余额为4元,第二笔交易额4元对应的参考账户余额为10元(13元-3元,累计交易额为3元),第三笔交易额7元对应的参考账户余额为10元(17元-3元-4元,累计交易额为7元),第四笔交易额10元对应的参考账户余额为11元(25元-3元-4元-7元,累计交易额为14元)。
步骤706,所述汇出方设备向区块链网络中的区块链节点提交所述多笔汇出交易,以指示所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
在本实施例中,针对任一汇出交易实施的汇出操作与上述图1所示的实施例类似,在此不再赘述。
与上述图1所示实施例类似的,所述任一汇出交易中还包含所述指定交易额对应的目标余额同态密文的标识;所述区块链网络中的区块链节点可先确定所述第一有效余额列表中与所述标识对应的历史余额同态密文,再根据确定出的历史余额同态密文和所述任一汇出交易中的交易额同态密文,对所述任一汇出交易中的范围证明进行验证。
与上述图1所示实施例类似的,所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文被所述区块链网络中的区块链节点作为所述任一汇出交易中的范围证明通过验证的前提条件。
与上述图1所示实施例类似的,针对任一汇出交易实施的汇出操作还包括:将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
与上述图1所示实施例类似的,所述任一汇出交易中还包含所述汇出方设备针对所述任一汇出交易的汇出方签名;其中,所述汇出方签名通过验签被所述区块链网络中的区块链节点作为更新所述汇出方区块链账户和相应的汇入方区块链账户的前提条件。
与上述图1所示实施例类似的,各个区块链账户的有效余额列表被通过预先部署的智能合约来记录和维护;或者,各个有效余额列表被记录和维护于相应的区块链账户中。
相应的,图8是一示例性实施例提供的另一种区块链节点侧的基于账户模型的区块链转账方法的流程图。如图8所示,该方法应用于区块链节点,可以包括以下步骤:
步骤802,区块链网络中的区块链节点接收汇出方设备提交的针对多个交易额分别创建的多笔汇出交易,所述多笔汇出交易按照预设的汇出顺序依次排列。
在本实施例中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额,所述指定交易额对应的目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文。
步骤804,所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作。
在本实施例中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
如前所述,所述任一汇出交易中还包含所述指定交易额对应的目标余额同态密文的标识;所述区块链网络中的区块链节点可确定所述第一有效余额列表中与所述标识对应的历史余额同态密文,再根据确定出的历史余额同态密文和所述任一汇出交易中的交易额同态密文,对所述任一汇出交易中的范围证明进行验证。
如前所述,所述区块链网络中的区块链节点将所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文作为所述任一汇出交易中的范围证明通过验证的前提条件。
如前所述,针对任一汇出交易实施的汇出操作还包括:将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
如前所述,所述任一汇出交易中还包含所述汇出方设备针对所述任一汇出交易的汇出方签名;所述区块链网络中的区块链节点可将所述汇出方签名通过验签作为更新所述汇出方区块链账户和相应的汇入方区块链账户的前提条件。如前所述,所述区块链网络中的区块链节点通过预先部署的智能合约来记录和维护各个区块链账户的有效余额列表;或者,所述区块链网络中的区块链节点将各个有效余额列表记录和维护于相应的区块链账户中。
为了便于理解,下面以用户X作为汇出方向用户Y1-Yk(作为汇入方)转账的场景为例,对基于账户模型的区块链转账过程进行详细描述。图9是一示例性实施例提供的另一种基于账户模型的区块链转账方法的交互图;如图9所示,汇出方设备和区块链节点之间的交互过程可以包括以下步骤:
步骤902A,汇出方设备确定当前交易额t_1。
步骤904A,汇出方设备从账户X的有效余额列表中选取足够汇出t_1的目标余额同态密文HE(x_i)。
步骤906A,汇出方设备计算当前交易额t的交易额同态密文HE(t_1)。
步骤908A,汇出方设备生成0<=t_1<=x_i的范围证明RP1。
步骤910A,汇出方设备创建汇出交易,对交易内容(HE(x_i),HE(t_1),RP1;Y1)进行签名得到SigX1。
步骤912A,汇出方设备向区块链提交汇出交易1。
需要说明的是,上述步骤902A-912A为汇出方设备针对用户Y1创建和提交汇出交易1的过程。其中,用户X向用户Y1汇出交易额t_1。上述步骤902A-912A的详细执行过程可参考上述步骤302-312,在此不再赘述。
步骤914A,区块链节点检查汇出交易1是否执行过。
步骤916A,区块链节点验证签名SigX1。
步骤918A,区块链节点验证HE(x_i)。
步骤920A,区块链节点验证范围证明RP1。
步骤922A,区块链节点更新账户X、账户Y1的账户余额同态密文。
步骤924A,区块链节点将账户X的有效余额列表中记录的各个历史余额同态密文分别扣除交易额同态密文HE(t_1),在账户Y1的有效余额列表中添加账户Y1的最新余额同态密文。
需要说明的是,上述步骤914A-924A的详细执行过程可参考上述步骤314-324,在此不再赘述。
下面结合图10对转账过程中更新账户X和账户Y1的操作进行说明。相比于创建汇出交易1时账户X的账户状态(仍以图4所示的账户状态为例),区块链节点在验证该汇出交易1时,账户X的账户状态有可能已经发生了变化。比如,可能在创建汇出交易之后,成功针对账户X实施了汇入操作。
如图10所示,假设当前账户X和账户Y1的账户状态分别为:
账户X:
账户余额同态密文:HE(x’);
有效余额列表:[HE(x_0), HE(x_1), HE(x_2)……HE(x_m’)];
其中,HE(x_m’)=HE(x’)。
账户Y1:
账户余额同态密文:HE(y);
有效余额列表:[HE(y_0), HE(y_1), HE(y_2) ……HE(y_n)];
其中,HE(y_n)=HE(y)。
那么,在上述验证操作均通过后,账户X和账户Y1的账户状态分别更新为:
账户X:
账户余额同态密文:HE(x’-t_1)=HE(x’)-HE(t_1);
有效余额列表:
[HE(x_i-t_1)……HE(x’-t_1)];
其中,HE(x_i-t_1)= HE(x_i)-HE(t_1),HE(x’-t_1)= HE(x’)-HE(t_1)。
与上述图6所示实施例类似,为了避免出现在扣除后得到的余额同态密文对应的账户余额为负数的情况,先将有效余额列表中排列在HE(x_i)之前的历史余额同态密文删除,然后再执行扣除的操作。
账户Y:
账户余额同态密文:HE(y+t_1)=HE(y)+HE(t_1);
有效余额列表:
[HE(y_0), HE(y_1), HE(y_2)……HE(y_n),HE(y_{n+1})];
其中,HE(y_{n+1})=HE(y)+HE(t_1)。
步骤902B,汇出方设备确定当前交易额t_2。
步骤904B,汇出方设备从账户X的有效余额列表中选取足够汇出t_1+t_2的目标余额同态密文HE(x_j)。
步骤906B,汇出方设备计算当前交易额t_2的交易额同态密文HE(t_2)。
步骤908B,汇出方设备生成0<=t_2<=x_j-t_1的范围证明RP2。
步骤910B,汇出方设备创建汇出交易,对交易内容(HE(x_j),HE(t_2),RP2;Y2)进行签名得到SigX2。
步骤912B,汇出方设备向区块链提交汇出交易2。
在本实施例中,汇出方设备可针对账户X批量发起汇出交易。具体而言,汇出方设备可查询账户X的有效余额列表,进而从中选取各个交易额对应的目标余额同态密文以批量创建汇出交易,直到有效余额列表中记录的历史余额同态密文对应的历史账户余额不足以支付交易额为止。在该情况下,汇出方设备可再次查询账户X的有效余额列表以对其进行更新(此时可能因针对账户X的汇入操作导致账户X的有效余额列表中记录有新的历史余额同态密文),从而利用更新后的有效余额列表再次进行新一批次的汇出交易的创建。
进一步的,在一种情况下,汇出方设备可以分别向区块链网络提交创建好的每一笔汇出交易,即串行提交每一笔汇出交易,则区块链网络中的区块链节点一笔一笔地接收每笔汇出交易,依次进行处理。在另一种情况下,汇出方设备还可以并发提交多笔创建好的汇出交易,则区块链网络中的区块链节点同时接收到多笔汇出交易后,批量进行处理。
例如,上述步骤902B-912B为汇出方设备针对用户Y2创建和提交汇出交易2的过程。其中,用户X向用户Y2汇出交易额t_2。依次类推,步骤902C-912C为汇出方设备针对用户Y3创建和提交汇出交易3的过程。其中,用户X向用户Y3汇出交易额t_3,等等,后续步骤不再列举。
步骤914B,区块链节点检查汇出交易2是否执行过。
步骤916B,区块链节点验证签名SigX2。
步骤918B,区块链节点验证HE(x_j)。
步骤920B,区块链节点验证范围证明RP2。
步骤922B,区块链节点更新账户X、账户Y2的账户余额同态密文。
步骤924B,区块链节点将账户X的有效余额列表中记录的各个历史余额同态密文分别扣除交易额同态密文HE(t_2),在账户Y1的有效余额列表中添加账户Y2的最新余额同态密文。
在本实施例中,汇出方设备依次连续创建并提交汇出交易1-k,则区块链节点依次执行汇出交易1-n。类似的,上述步骤914B-924B的详细执行过程可参考上述步骤314-324,在此不再赘述。
下面结合图11对转账过程中更新账户X和账户Y2的操作进行说明。相比于创建汇出交易2时账户X的账户状态,区块链节点在验证该汇出交易2时,账户X的账户状态有可能已经发生了变化。比如,可能在执行完汇出交易1之后,成功针对账户X实施了汇入操作。
如图11所示,假设当前账户X和账户Y2的账户状态分别为:
账户X:
账户余额同态密文:HE(x’’);
有效余额列表:[HE(x_i-t_1)……HE(x_j-t_1)……HE(x_m’’)];
其中,HE(x_m’’)=HE(x’’)。
账户Y2:
账户余额同态密文:HE(y’);
有效余额列表:[HE(y’_0), HE(y’_1), HE(y’_2) ……HE(y’_n’)];
其中,HE(y’_n’)=HE(y’)。
那么,在上述验证操作均通过后,账户X和账户Y2的账户状态分别更新为:
账户X:
账户余额同态密文:HE(x’’-t_2)=HE(x’’)-HE(t_2);
有效余额列表:
[HE(x_j-t_1-t_2)……HE(x’’-t_2)];
其中,HE(x_j-t_1-t_2)= HE(x_j)-HE(t_1)-HE(t_2),
HE(x’’-t_2)= HE(x’’)-HE(t_2)。
与上述图6所示实施例类似,为了避免出现在扣除后得到的余额同态密文对应的账户余额为负数的情况,先将有效余额列表中排列在HE(x_j)之前的历史余额同态密文删除,然后在执行扣除的操作。
账户Y2:
账户余额同态密文:HE(y’+t_2)=HE(y’)+HE(t_2);
有效余额列表:
[HE(y’_0), HE(y’_1), HE(y’_2)……
HE(y’_n’),HE(y’_{n’+1})];
其中,HE(y’_{n’+1})=HE(y’)+HE(t_2)。
在上述图9所示的实施例中,在需要从汇出方区块链账户向其他区块链账户汇出多笔交易额的情况下,无需等待在前一笔汇出交易完成后才能再创建以及发起一笔新的汇出交易,而是支持依次连续创建和提交多笔汇出交易,支持对汇出交易有高频需求的账户,解决了多笔汇出交易的并发问题。同时,与上述图1所示实施例同理,本实施例解耦了汇出操作和汇入操作之间的关系,解决了这两类操作之间的并发问题,同一账户下的汇出交易和汇入交易无需按照时序串行执行,有利于提高交易的吞吐量,并且也不会影响到转账效率和资金的利用率。
与上述方法实施例相对应,本说明书还提供了一种基于账户模型的区块链转账装置的实施例。
本说明书的基于账户模型的区块链转账装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
从硬件层面而言,请参考图12,图12是一示例性实施例提供的一种设备的示意结构图。如图12所示,在硬件层面,该设备包括处理器1202、内部总线1204、网络接口1206、内存1208以及非易失性存储器1210,当然还可能包括其他业务所需要的硬件。处理器1202从非易失性存储器1210中读取对应的计算机程序到内存1208中然后运行,在逻辑层面上形成基于账户模型的区块链转账装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图13,在一软件实施方式中,汇出方设备侧的基于账户模型的区块链转账装置可以包括:
确定单元1301,使汇出方设备从汇出方区块链账户的第一有效余额列表中确定出与多个交易额分别对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
创建单元1302,使所述汇出方设备针对所述多个交易额创建相应的多笔汇出交易,且所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额;
提交单元1303,使所述汇出方设备向区块链网络中的区块链节点提交所述多笔汇出交易,以指示所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
可选的,所述任一汇出交易中还包含所述指定交易额对应的目标余额同态密文的标识;所述区块链网络中的区块链节点验证所述任一汇出交易中的范围证明的操作,包括:
确定所述第一有效余额列表中与所述标识对应的历史余额同态密文;
根据确定出的历史余额同态密文和所述任一汇出交易中的交易额同态密文,对所述任一汇出交易中的范围证明进行验证。
可选的,所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文被所述区块链网络中的区块链节点作为所述任一汇出交易中的范围证明通过验证的前提条件。
可选的,针对任一汇出交易实施的汇出操作还包括:
将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
可选的,所述任一汇出交易中还包含所述汇出方设备针对所述任一汇出交易的汇出方签名;其中,所述汇出方签名通过验签被所述区块链网络中的区块链节点作为更新所述汇出方区块链账户和相应的汇入方区块链账户的前提条件。
可选的,各个区块链账户的有效余额列表被通过预先部署的智能合约来记录和维护;或者,各个有效余额列表被记录和维护于相应的区块链账户中。
请参考图14,在一软件实施方式中,区块链节点侧的基于账户模型的区块链转账装置可以包括:
接收单元1401,使区块链网络中的区块链节点接收汇出方设备提交的针对多个交易额分别创建的多笔汇出交易,所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额,所述指定交易额对应的目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
汇出单元1402,使所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
可选的,所述任一汇出交易中还包含所述指定交易额对应的目标余额同态密文的标识;所述汇出单元1402具体用于:
确定所述第一有效余额列表中与所述标识对应的历史余额同态密文;
根据确定出的历史余额同态密文和所述任一汇出交易中的交易额同态密文,对所述任一汇出交易中的范围证明进行验证。
可选的,所述汇出单元1402还用于:
所述区块链网络中的区块链节点将所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文作为所述任一汇出交易中的范围证明通过验证的前提条件。
可选的,所述汇出单元1402还用于:
将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
可选的,所述任一汇出交易中还包含所述汇出方设备针对所述任一汇出交易的汇出方签名;所述汇出单元1402还用于:
所述区块链网络中的区块链节点将所述汇出方签名通过验签作为更新所述汇出方区块链账户和相应的汇入方区块链账户的前提条件。
可选的,所述区块链网络中的区块链节点通过预先部署的智能合约来记录和维护各个区块链账户的有效余额列表;或者,所述区块链网络中的区块链节点将各个有效余额列表记录和维护于相应的区块链账户中。
请参考图15,在另一软件实施方式中,汇出方设备侧的基于账户模型的区块链转账装置可以包括:
确定单元1501,使汇出方设备从汇出方区块链账户的第一有效余额列表中确定与当前交易额对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
创建单元1502,使所述汇出方设备创建汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于所述目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息;
提交单元1503,使所述汇出方设备向区块链网络中的区块链节点提交所述汇出交易,以指示所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
可选的,所述汇出交易中还包含所述目标余额同态密文的标识,所述汇出交易中的范围证明由所述区块链网络中的区块链节点根据所述第一有效余额列表中与所述标识对应的历史余额同态密文和所述交易额同态密文进行验证。
可选的,所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文被所述区块链网络中的区块链节点作为所述汇出交易中的范围证明通过验证的前提条件。
可选的,所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文被所述区块链网络中的区块链节点删除。
可选的,所述汇出交易中还包含所述汇出方设备针对所述汇出交易的汇出方签名;其中,所述汇出方签名通过验签被所述区块链网络中的区块链节点作为更新所述汇出方区块链账户和所述汇入方区块链账户的前提条件。
可选的,各个区块链账户的有效余额列表被通过预先部署的智能合约来记录和维护;或者,各个有效余额列表被记录和维护于相应的区块链账户中。
请参考图16,在另一软件实施方式中,区块链节点侧的基于账户模型的区块链转账装置可以包括:
接收单元1601,使区块链网络中的区块链节点接收汇出方设备提交的汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息,所述目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
汇出单元1602,使所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
可选的,所述汇出交易中还包含所述目标余额同态密文的标识;所述汇出单元1602具体用于:
确定所述第一有效余额列表中与所述标识对应的历史余额同态密文;
根据确定出的历史余额同态密文和所述交易额同态密文,对所述汇出交易中的范围证明进行验证。
可选的,所述汇出单元1602还用于:
所述区块链网络中的区块链节点将所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文作为所述汇出交易中的范围证明通过验证的前提条件。
可选的,所述汇出单元1602还用于:
所述区块链网络中的区块链节点将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
可选的,所述汇出交易中还包含所述汇出方设备针对所述汇出交易的汇出方签名;所述汇出单元1602还用于:
所述区块链网络中的区块链节点将所述汇出方签名通过验签作为更新所述汇出方区块链账户和所述汇入方区块链账户的前提条件。
可选的,所述区块链网络中的区块链节点通过预先部署的智能合约来记录和维护各个区块链账户的有效余额列表;或者,所述区块链网络中的区块链节点将各个有效余额列表记录和维护于相应的区块链账户中。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (30)
1.一种基于账户模型的区块链转账方法,包括:
汇出方设备从汇出方区块链账户的第一有效余额列表中确定出与多个交易额分别对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述汇出方设备针对所述多个交易额创建相应的多笔汇出交易,且所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额;
所述汇出方设备向区块链网络中的区块链节点提交所述多笔汇出交易,以指示所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
2.根据权利要求1所述的方法,所述任一汇出交易中还包含所述指定交易额对应的目标余额同态密文的标识;所述区块链网络中的区块链节点验证所述任一汇出交易中的范围证明的操作,包括:
确定所述第一有效余额列表中与所述标识对应的历史余额同态密文;
根据确定出的历史余额同态密文和所述任一汇出交易中的交易额同态密文,对所述任一汇出交易中的范围证明进行验证。
3.根据权利要求2所述的方法,所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文被所述区块链网络中的区块链节点作为所述任一汇出交易中的范围证明通过验证的前提条件。
4.根据权利要求2所述的方法,针对任一汇出交易实施的汇出操作还包括:
将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
5.根据权利要求1所述的方法,所述任一汇出交易中还包含所述汇出方设备针对所述任一汇出交易的汇出方签名;其中,所述汇出方签名通过验签被所述区块链网络中的区块链节点作为更新所述汇出方区块链账户和相应的汇入方区块链账户的前提条件。
6.根据权利要求1所述的方法,各个区块链账户的有效余额列表被通过预先部署的智能合约来记录和维护;或者,各个有效余额列表被记录和维护于相应的区块链账户中。
7.一种基于账户模型的区块链转账方法,包括:
区块链网络中的区块链节点接收汇出方设备提交的针对多个交易额分别创建的多笔汇出交易,所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额,所述指定交易额对应的目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
8.根据权利要求7所述的方法,所述任一汇出交易中还包含所述指定交易额对应的目标余额同态密文的标识;所述区块链网络中的区块链节点验证所述任一汇出交易中的范围证明的操作,包括:
确定所述第一有效余额列表中与所述标识对应的历史余额同态密文;
根据确定出的历史余额同态密文和所述任一汇出交易中的交易额同态密文,对所述任一汇出交易中的范围证明进行验证。
9.根据权利要求8所述的方法,还包括:
所述区块链网络中的区块链节点将所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文作为所述任一汇出交易中的范围证明通过验证的前提条件。
10.根据权利要求8所述的方法,针对任一汇出交易实施的汇出操作还包括:
将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
11.根据权利要求7所述的方法,所述任一汇出交易中还包含所述汇出方设备针对所述任一汇出交易的汇出方签名;所述方法还包括:
所述区块链网络中的区块链节点将所述汇出方签名通过验签作为更新所述汇出方区块链账户和相应的汇入方区块链账户的前提条件。
12.根据权利要求7所述的方法,所述区块链网络中的区块链节点通过预先部署的智能合约来记录和维护各个区块链账户的有效余额列表;或者,所述区块链网络中的区块链节点将各个有效余额列表记录和维护于相应的区块链账户中。
13.一种基于账户模型的区块链转账方法,包括:
汇出方设备从汇出方区块链账户的第一有效余额列表中确定与当前交易额对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述汇出方设备创建汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于所述目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息;
所述汇出方设备向区块链网络中的区块链节点提交所述汇出交易,以指示所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
14.根据权利要求13所述的方法,所述汇出交易中还包含所述目标余额同态密文的标识,所述汇出交易中的范围证明由所述区块链网络中的区块链节点根据所述第一有效余额列表中与所述标识对应的历史余额同态密文和所述交易额同态密文进行验证。
15.根据权利要求14所述的方法,所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文被所述区块链网络中的区块链节点作为所述汇出交易中的范围证明通过验证的前提条件。
16.根据权利要求14所述的方法,所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文被所述区块链网络中的区块链节点删除。
17.根据权利要求13所述的方法,所述汇出交易中还包含所述汇出方设备针对所述汇出交易的汇出方签名;其中,所述汇出方签名通过验签被所述区块链网络中的区块链节点作为更新所述汇出方区块链账户和所述汇入方区块链账户的前提条件。
18.根据权利要求13所述的方法,各个区块链账户的有效余额列表被通过预先部署的智能合约来记录和维护;或者,各个有效余额列表被记录和维护于相应的区块链账户中。
19.一种基于账户模型的区块链转账方法,包括:
区块链网络中的区块链节点接收汇出方设备提交的汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息,所述目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
20.根据权利要求19所述的方法,所述汇出交易中还包含所述目标余额同态密文的标识;所述区块链网络中的区块链节点验证所述汇出交易中的范围证明的操作,包括:
确定所述第一有效余额列表中与所述标识对应的历史余额同态密文;
根据确定出的历史余额同态密文和所述交易额同态密文,对所述汇出交易中的范围证明进行验证。
21.根据权利要求20所述的方法,还包括:
所述区块链网络中的区块链节点将所述第一有效余额列表中记录有与所述标识对应的历史余额同态密文作为所述汇出交易中的范围证明通过验证的前提条件。
22.根据权利要求20所述的方法,还包括:
所述区块链网络中的区块链节点将所述第一有效余额列表中形成时刻早于与所述标识对应的历史余额同态密文的历史余额同态密文删除。
23.根据权利要求19所述的方法,所述汇出交易中还包含所述汇出方设备针对所述汇出交易的汇出方签名;所述方法还包括:
所述区块链网络中的区块链节点将所述汇出方签名通过验签作为更新所述汇出方区块链账户和所述汇入方区块链账户的前提条件。
24.根据权利要求19所述的方法,所述区块链网络中的区块链节点通过预先部署的智能合约来记录和维护各个区块链账户的有效余额列表;或者,所述区块链网络中的区块链节点将各个有效余额列表记录和维护于相应的区块链账户中。
25.一种基于账户模型的区块链转账装置,包括:
确定单元,使汇出方设备从汇出方区块链账户的第一有效余额列表中确定出与多个交易额分别对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
创建单元,使所述汇出方设备针对所述多个交易额创建相应的多笔汇出交易,且所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额;
提交单元,使所述汇出方设备向区块链网络中的区块链节点提交所述多笔汇出交易,以指示所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
26.一种基于账户模型的区块链转账装置,包括:
接收单元,使区块链网络中的区块链节点接收汇出方设备提交的针对多个交易额分别创建的多笔汇出交易,所述多笔汇出交易按照预设的汇出顺序依次排列;其中,任一汇出交易中包含指定交易额对应的交易额同态密文、用于证明所述指定交易额非负且所述指定交易额不大于对应的参考账户余额的范围证明和汇入方区块链账户的信息,所述参考账户余额对应的同态密文由所述指定交易额对应的目标余额同态密文通过扣除累计交易额对应的同态密文而得到,所述累计交易额为排列于所述任一汇出交易之前的其他汇出交易包含的交易额,所述指定交易额对应的目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
汇出单元,使所述区块链网络中的区块链节点按照所述汇出顺序依次对各个汇出交易实施汇出操作;其中,针对任一汇出交易实施的汇出操作包括:在确定所述任一汇出交易中的范围证明通过验证的情况下,根据所述任一汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和相应的汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述任一汇出交易中记录的交易额同态密文,以及在相应的汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
27.一种基于账户模型的区块链转账装置,包括:
确定单元,使汇出方设备从汇出方区块链账户的第一有效余额列表中确定与当前交易额对应的目标余额同态密文;其中,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
创建单元,使所述汇出方设备创建汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于所述目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息;
提交单元,使所述汇出方设备向区块链网络中的区块链节点提交所述汇出交易,以指示所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
28.一种基于账户模型的区块链转账装置,包括:
接收单元,使区块链网络中的区块链节点接收汇出方设备提交的汇出交易,所述汇出交易中包含对应于当前交易额的交易额同态密文、用于证明所述当前交易额非负且所述当前交易额不大于目标余额同态密文对应的历史账户金额的范围证明和汇入方区块链账户的信息,所述目标余额同态密文由所述汇出方设备从汇出方区块链账户的第一有效余额列表中确定,有效余额列表用于记录对相应的区块链账户实施汇入操作而形成的各个历史账户余额对应的历史余额同态密文;
汇出单元,使所述区块链网络中的区块链节点在确定所述汇出交易中的范围证明通过验证的情况下,根据所述汇出交易中的交易额同态密文分别更新所述汇出方区块链账户和所述汇入方区块链账户的账户余额同态密文,并将所述第一有效余额列表中记录的各个历史余额同态密文分别扣除所述汇出交易中的交易额同态密文,以及在所述汇入方区块链账户的第二有效余额列表中添加最新余额同态密文。
29.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-24中任一项所述的方法。
30.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-24中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010479988.XA CN111401875B (zh) | 2020-05-29 | 2020-05-29 | 基于账户模型的区块链转账方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010479988.XA CN111401875B (zh) | 2020-05-29 | 2020-05-29 | 基于账户模型的区块链转账方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111401875A CN111401875A (zh) | 2020-07-10 |
CN111401875B true CN111401875B (zh) | 2020-09-01 |
Family
ID=71431857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010479988.XA Active CN111401875B (zh) | 2020-05-29 | 2020-05-29 | 基于账户模型的区块链转账方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111401875B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111800252A (zh) * | 2020-07-22 | 2020-10-20 | 深圳壹账通智能科技有限公司 | 基于区块链的信息审核方法、装置和计算机设备 |
CN112819618B (zh) * | 2021-01-12 | 2024-01-23 | 北京金山云网络技术有限公司 | 交易信息保存方法、装置、电子设备及存储介质 |
CN112990928B (zh) * | 2021-05-10 | 2021-08-24 | 南开大学 | 一种数字货币交易数据的安全保护方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257182A (zh) * | 2018-10-24 | 2019-01-22 | 杭州趣链科技有限公司 | 一种基于同态的密码学承诺与零知识范围证明的区块链隐私保护方法 |
CN110458561A (zh) * | 2019-07-31 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 区块链网络中实现机密交易的方法及装置 |
CN111161074A (zh) * | 2019-12-31 | 2020-05-15 | 预言机(重庆)科技有限公司 | 一种支持金额锁定的区块链账户余额模型构建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL3560144T3 (pl) * | 2018-12-21 | 2021-10-25 | Advanced New Technologies Co., Ltd. | Ochrona danych łańcucha bloków oparta na ogólnym modelu konta i szyfrowaniu homomorficznym |
-
2020
- 2020-05-29 CN CN202010479988.XA patent/CN111401875B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257182A (zh) * | 2018-10-24 | 2019-01-22 | 杭州趣链科技有限公司 | 一种基于同态的密码学承诺与零知识范围证明的区块链隐私保护方法 |
CN110458561A (zh) * | 2019-07-31 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 区块链网络中实现机密交易的方法及装置 |
CN111161074A (zh) * | 2019-12-31 | 2020-05-15 | 预言机(重庆)科技有限公司 | 一种支持金额锁定的区块链账户余额模型构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111401875A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11295303B2 (en) | Method, apparatus and electronic device for blockchain transactions | |
JP7128111B2 (ja) | ブロックチェーンを介して資産関連活動を制御するシステム及び方法 | |
CN109359971B (zh) | 区块链交易方法及装置、电子设备 | |
CN110457875B (zh) | 基于区块链的数据授权方法及装置 | |
CN110473094B (zh) | 基于区块链的数据授权方法及装置 | |
CN109417465B (zh) | 区块链执行的智能合约的注册和自动化管理方法 | |
CN111401875B (zh) | 基于账户模型的区块链转账方法及装置 | |
CN109325747B (zh) | 基于区块链的汇款方法及装置 | |
CN109544129B (zh) | 区块链交易方法及装置、电子设备 | |
CN109508970B (zh) | 基于区块链的汇款方法及装置 | |
CN110033363B (zh) | 基于区块链的事件处理方法及装置、电子设备 | |
CN110008716B (zh) | 区块链交易方法及装置、电子设备、存储介质 | |
CN110033370B (zh) | 账户创建方法及装置、电子设备、存储介质 | |
CN111047321A (zh) | 业务处理方法及装置、电子设备、存储介质 | |
TW202016819A (zh) | 區塊鏈交易方法及裝置、電子設備 | |
CN110458561B (zh) | 区块链网络中实现机密交易的方法及装置 | |
CN111178840A (zh) | 业务处理方法及装置、系统、电子设备、存储介质 | |
CN110009492B (zh) | 区块链交易方法及装置、电子设备、存储介质 | |
CN110009323B (zh) | 区块链交易方法及装置、电子设备、存储介质 | |
CN110033367A (zh) | 基于区块链的合同记录方法及装置、电子设备 | |
US20200175502A1 (en) | Confidential transaction in a blockchain network | |
CN111383008B (zh) | 基于账户模型的区块链转账方法及装置 | |
Mohammad | Decision Analytics Using Permissioned Blockchain" Commledger" | |
GB2603589A (en) | Consensus algorithm for distributed ledger technology | |
CN111667272A (zh) | 基于区域与利率的数字货币使用方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40032978 Country of ref document: HK |