PascalCoin白皮书(3)- PascalCoin架构

PascalCoin架构

SafeBox设计

与(比特币等币)使用一系列块,包含从一个地址到另一个地址的交易记录(即UTXO)不同,PascalCoin使用2个组件:SafeBox(包含所有当前帐户余额)和块(连接在一起形成区块链)。和Bitcoin又相同的是,PascalCoin采矿节点也负责创建一个新块。当新块出现的时候,所有节点都会独立地更新它们本地的SafeBox副本。作为此任务的一部分,节点需要基于区块中操作,更新已存在账户的余额(和其他字段),以及创建新的包含全新的PascalCoin帐户的帐户段,这些账户将被授予成功挖到新块的矿工。

PascalCoin白皮书(3)- PascalCoin架构_第1张图片
图以后翻译_(xз」∠)_

创世区块

在第一个块被创造之前,第一个编号0的SafeBox(创世SafeBox)被创造,其中没有任何帐户。通过工作证明(PoW),其中创世Safebox的hash值作为输入,矿工将为区块链寻找新的块。在第一个块被创建后,一个相应的新版本的SafeBox将被创造,伴随着包含N个新帐户的帐户段,其中N由协议定义(N在当前PascalCoin版本2中设置为5)。现在,矿工们将开始在区块链的下一个块中进行处理,以生成下一版本的SafeBox,其中将包括由节点传播的新的待处理操作。

操作

与比特币和其他加密货币类似,PascalCoin中的块是交易信息的容器,交易信息被称为“操作”。它们之所以被称为操作,是因为它们广义化了交易的表现,即,不仅仅是在账户之间转移资金。还有,例如,有操作更改帐户的密钥,更改其名称或将其标记为待售等等。但最重要的和常见的操作依然是在账户之间转账的交易操作。

帐号

SafeBox本质上就是一个帐户列表。 账户包含账户余额,拥有者的公钥,一个独一无二的名称和一个类型字段。

账户数据结构如下:

元素名 数据类型 描述
账号编号 无符号32位 用于识别账户的序列数字,它永远不会改变。
公开的椭圆曲线密钥 公钥(类型,X和Y)(处于66和200字节之间) 这个公钥相当于账户的PIN。这个值可以被随时改变,但只有当前公钥对应的私钥的所有人才可以执行操作
余额 无符号64位 当前账户余额
最新块 无符号32位 在区块链中最后一个修改此账户信息的操作所在的块编号。这个值帮助在浑浊列表中识别出未使用的账户
N操作 无符号32位 一个用于指出基于此账户的交易数的递增数字,而且确保了操作订单独一无二且因此不会重复
账户名 RawBytes 一个独一无二且公开的账户名称。默认是空的。该名称根据PascalCoin64算法编码。
类型 单一字符 用于区分不同用途的账户,当二层协议被建立后它的值将变的非常实用。例如,类型为2的可能为“聊天频道”保留,类型为3的为“在线商店”储备,等等

帐户段

SafeBox中的帐户按分段分组,以形成所谓的“帐户段”。每次矿工通过采矿附加到SafeBox时都会生成帐户段。换句话说,SafeBox每次都有一个新的块,用原来的一个新的账户段进行扩展正在开采

每个帐户段中的内容如下:

元素名 数据类型 描述
块编号 无符号32位 这相当于块号块链(见后面部分)。
账户 数组N 具有帐号的固定数组(大小N)这是由该块生成的。 在当前的PascalCoin协议版本下N设置为5,但在未来版本中可能会增加和/或成为变量。
时间戳 无符号32位 Unix时间戳生成后 这个值永远不变
账户段哈希值 32字节 此块的哈希值。 它每一个都改变此帐户中的任何帐户段变化(均衡调整或公共EC键改变)。这验证并确保其完整性这个块。
块头 〜180字节 这是V2中的新功能。 这个数据允许一个节点重新计算所用的总工作量构建SafeBox而不需要块。

此外,SafeBox还包含一个校验和,该校验和作为所有“帐户段”的汇总散列值创建哈希值。 该值被称为SafeBox哈希,并在最后一个帐户之后立即附加SafeBox中的账户段。 下一个块也必须引用此SafeBox的哈希才能生效。

区块链

就像比特币一样,财务数据的完整性通过一系列的工作证明来保证块链在一起。 同样类似比特币,这些块包含交易列表用于改变财务状态。但是,和比特币不同,在PascalCoin中,块不直接引用前一个块的哈希值。相反,它引用了之前的SafeBox的哈希值,通过它传递性地连接到上一个块中此SafeBox哈希对应的帐户段。如前面所述,当矿工赢得工作证明时,它将发布新的块,导致更新的SafeBox将包含一个新的帐户段(N个新帐号)。这些新帐户被分配绑定到被奖励的矿工的公钥上。

块结构包含以下字段:

元素名 数据类型 描述
块编号 无符号32位 由矿工生成的区块编号
账户密钥 公钥(类型,X和Y)(在66和200字节之间) 矿工列出的它自己的公钥,此公钥将被分配到该区块账户中N个新账户
奖励 无符号64位 矿工奖励,初始被设置为100Pascal且每四年减半
酬金 无符号64位 通过挖掘区块链中本区块及相应账户段,矿工们搜集到的所有交易费
协议版本 无符号16位 协议版本
可用协议 无符号16位 协议编号,可以使矿工成为本区块的拥有者 (为未来协议升级的适配)
时间戳 无符号32位 区块被创建时的Unix时间戳
适配目标 无符号32位 矿工在PoW工作中必须获得的难度水平
随机数 无符号32位 随机数,用于通过矿工以工作证明去获得要求的结果(例如,散列具有多个前导0位,就像比特币一样)
上个SafeBox哈希值 32位 上一个SafeBox的哈希值,同样也被用于创建下一个SafeBox版本
操作的哈希值 32位 梅克尔树(Merkle Tree)哈希(见下面)
工作证明 32位 本块的哈希值,用于PoW(工作证明)

Donate: 7711-71
Translator: Command

你可能感兴趣的:(PascalCoin白皮书(3)- PascalCoin架构)