zoukankan      html  css  js  c++  java
  • 术语:BUMO 术语

    BUMO 术语

    账户nonce值

    Nonce即随机数,是Number Used Once或者Number Once的缩写。在信息技术领域,nonce是为了某一特定用途而生成的一个数字,比如用于会话认证。通常来说,nonce的值会随着时间变化的,虽然有时会使用非常大的nonce。在一般的用法中,nonce含有“即时场合”或者“现在”的意思。在区块链的POW场景中,矿工寻到找的与网络难度相匹配的hash值可以提供区块检验,因此也可以称其为nonce。在BuChain中,账户nonce值则是指每个账户都维护的一个序列号,用于用户提交交易时标识交易的执行顺序。

    Keypair

    Keypair是BUMO工程中生成公钥、私钥、地址及签名的接口。在签名过程中仅支持ED25519签名算法。

    原始私钥

    原始私钥是指通过随机算法得到的字节数组,该字节数组是生成私钥的前提条件。 在BuChain中,原始私钥是利用随机算法生成一个256位的随机数,是数学意义上的私钥。 例如:

    17,236,24,183,207,250,207,180,108,87,224,39,189,99,246,85,138,120,236,78,228,233,41,192,124,109,156,104,235,66,194,24
    

    原始公钥

    在BuChain中,原始公钥是指通过 ED25519 算法对原始私钥进行处理生成的字节数组,该字节数组是生成公钥的前提条件。例如:通过 ED25519 算法对privbsGZFUoRv8aXZbSGd3bwzZWFn3L5QKq74RXAQYcmfXhhZ54CLr9z 处理后得到原始公钥 21,118,76,208,23,224,218,117,50,113,250,38,205,82,148,81,162,27,130,83,208,1,240,212,54,18,225,158,198,50,87,10

    私钥

    私钥是在非对称密钥加密过程中通过算法生成的一段代码,与公钥配对,用于解密用公钥加密的信息,只有私钥拥有者才能知道私钥信息。私钥是生成公钥和地址的前提条件,同时也是完成签名的基本要素。私钥生成后不能更改,一旦丢失将无法找回,因此需要妥善保管。 在BuChain中,私钥由256位的原始私钥产生的字节数组加上验证码并进行Base58编码得到以priv开始的字符串。 例如:privbsGZFUoRv8aXZbSGd3bwzZWFn3L5QKq74RXAQYcmfXhhZ54CLr9z

    公钥

    公钥是基于私钥产生的一串字符串,可以验证由私钥生成的签名的真伪,在网络间传输时不会导致私钥泄露,同时也是生成地址的必要条件。在BuChain中,公钥是使用ED25519 算法对私钥进行处理后再进行16进制编制得到的16进制字符串。例如:b00115764cd017e0da753271fa26cd529451a21b8253d001f0d43612e19ec632570a74ab166b

    地址

    地址是基于公钥产生的一串字符串。与现实生活中的地址类似,没有地址就无法找到联系人,因此也就无法完成交易。在BuChain中,地址是在私钥和公钥生成的基础上进行Base58编码,得到以bu开头的字符串。例如:buQmWJrdYJP5CPKTbkQUqscwvTGaU44dord8

    签名

    签名是指通过算法和私钥对交易数据进行加密确认并得到签名数据的过程。用户可以通过签名数据判断交易数据的完整性和正确性。

    交易

    交易是指在区块链中进行交换加密货币,在BUMO中所有修改区块链数据的操作都称为交易,比如发行资产、转移资产、发送BU、创建账号、设置metadata、设置权限等都是交易。

    交易Blob

    交易Blob是指对一个交易对象进行序列化处理之后得到的16进制字符串。交易序列化是指通过ProtoBuf数据结构将交易对象的状态信息转换成可以存储和传输的字符串的过程。

    操作BU区块链

    操作BU区块链是指向BU区块链写入或修改数据。

    提交交易

    提交交易是指向BU区块链发送修改的内容。

    查询BU区块链

    查询BU区块链是指查询BU区块链中的数据。

    账户服务

    账户服务是指提供账户相关的有效性校验与查询接口。

    资产服务

    资产服务是指提供资产相关的查询接口。

    合约服务

    合约服务是指提供合约相关的有效性校验与查询接口。

    交易服务

    交易服务是指提供交易相关的提交与查询接口。

    区块服务

    区块服务是指提供区块的查询接口。

    序列化

    很多地方都要用到序列化的功能。比如我们要对一笔交易签名,其实我们只能对字节串签名,这时就需要将交易序列化为字节串;还有我们需要存储交易,也需要序列化为字节流才能存储。我们选择了Google的Protocol Buffer 3协议进行序列化。由此我们的所有数据结构的定义都是用Protocol Bbuffer 3 定义的。Protocol Buffer 3的优点是速度快,占用空间小,有多种语言支持。我们统一用SerializeAsString表示对一个protocol buffer对象的序列化操作。

    账号地址

    在非对称签名体系中,有私钥和公钥。它的工作原理是根据算法随机产生一个公私钥对,私钥(skey)由用户保管,公钥(pkey)公开,签名时signature = Sign(skey, message); 验证时判断Verify(pkey, signature, message)为true或false。那么为何不以pkey为用户的唯一标识?因为pkey的长度是不固定的,对于确定的椭圆曲线家族算法来说,pkey一般长度在64字节,而RSA体系中pkey的长度则有几百字节,是不方便用户查看和保存的。为了兼容多种签名算法且固定长度,我们对公钥进行散列运算,再加一些其他的标志位生成账号地址。 它是根据公钥计算出来的长度为36字节的字符串,是账号的唯一标识。

    区块

    一个区块由2大部分组成,区块头LedgerHeader和所包含的交易transaction_envs。

    资产

    资产是由账号发行出来的数字凭证。

    BU币

    BU币是BU链内置的原生token,用于支付网络交易费用和区块链网络的运营维护。BU链启动时,在创世账户被创建时内置生成10亿BU币。除了初始化内置的部分外,每次有新的区块生成时,也会产生一定数额的BU币,用来奖励参与区块打包的共识节点。每次区块产生奖励的BU币和该区块内所有为交易支付的费用,将被均匀分给所有此次参与区块打包的共识节点,取模的余额将随机奖励给某个参与共识的节点。区块奖励的总额为5亿。初始阶段,每个区块奖励8个BU币,以后,每五年每个区块奖励的BU币个数衰减 1/4,360年后5亿BU币将全部奖励完毕。

    账号

    账号是 BUMO 区块链的主体,是对现实社会中法人或自然人一种的映射。

    交易 transaction

    交易广义的定义,它是一个对账号进行一系列操作的组合。

    操作 operation

    操作是交易中附带的具体动作,改变账号的原子单位。一个交易,必定是包含了1个或多个操作。

    创建账号

    账号为交易的主体,所有的交易必须通过账号发起执行。因此,在执行其他操作之前必须首先创建账号。创建账号操作由其他已存在的账号申请执行。第一个账号是在BU链启动时内置生成的,也被成为创世账号。

    发行资产

    任意一个账户都可以通过执行发行资产操作创建属于自己的资产。

    转移资产

    通过转移资产操作,可以将源账号下的制定资产转移给目的地址。

    转移BU币

    BUMO 链中的原生币叫BU,转移BU是指把一个账户中的BU转移到其他账户。

    设置metadata

    metadata是一个带版本的键值对数据库。它的每一个键值对,都有一个版本号,每当修改了这条数据,版本号就会自动加1。

    设置权重

    设置账户拥有者和签名者在源账号下的权重。

    设置门限

    设置源账号下各项操作的门限,如果交易中某项操作的权重没有达到该操作的门限值,该操作将被拒绝。

    交易缓存队列

    区块链网络内任意一个节点收到一笔交易请求后,首先会对交易进行合法性检查。如果检查合法,则将此交易请求广播给其他节点,并将此请求加入到交易缓存队列中。

    交易的打包

    系统依靠定时器每10s发起一轮共识来打包用于生成新区块的交易。打包时,从交易缓存队列的头部开始有序抓取不超过4M字节的交易。如果遇到交易源账号序号断号的情况,将会从断号位置跳过该源账号请求的所有的交易,并标记该源账号断号位置,在断号补齐之前后续的区块也不会打包该源账号的交易,直到补齐断号,或者在交易缓存队列缓存超时被删除。

    P2P

    P2P(Peer-to-peer networking), 对等网络或者点对点网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。在此网络中的参与者既是资源、服务和内容的提供者,又是资源、服务和内容的获取者。

    广播和组播

    我们在定义消息类型的时候,根据消息的传播方式,可以将这些消息分为广播消息和单播消息。广播(broadcasting)是多点投递的方式,它向每一个目的站投递一个分组的拷贝。单播(unicasting)是指只有一个目的地的数据报传递。

    在 BUMO P2P 中,假设有四个节点,单播消息是指节点 A 收到节点了节点 B 的消息,不会再次传播给 C 和 D。

    共识节点选举

    为了保证整个区块链网络的稳定性和成长性,BU链提供了验证节点选举功能。这样,可以将发现的作恶的验证节点剔除共识节点群体,也可以选举性能更高的节点加入验证节点。

    交易事务处理

    同一笔交易中的所有操作,要么同时成功,要么同时失败,这被称为交易的原子性或者事务性。

    交易费用

    用户发送交易请求必须支付相应的交易费用,以填补区块链网络内计算机节点设备的折旧、电力、运维等成本。在BU链中,区块链费用可以在交易前评估,且评估不收取任何费用,以方便用户根据自身情况合理提供交易费用。此外,费用的标准也可以在区块链运行过程中根据实际需要选举修改。

    费用评估

    基本费用检查通过并不能保证支付的交易费用一定足够,因为基本费用检查并不包括合约触发交易产生的费用。所以,为了保证支付的交易费用足够,用户可以先调用费用评估接口评估费用。BU链提供了名字为TestTransaction的http接口供用户评估交易费用。 费用评估会在一个完全仿真的环境中实际执行交易,根据交易的实际执行计算真实的交易费用。

    费用选举

    在区块链网络实际运行过程中,可能需要根据实际情况调节交易费用。比如,在共识节点运维成本固定的情况下,全网交易量不断增长,就摊薄了每个交易的成本,这时候就需要有一种全网共识机制来调低交易费。所以,BU链需要提供费用选举机制。 在区块链启动之初,创建一个费用选举合约账户。

    合约

    智能合约是二十世纪九十年代由尼克萨博提出的理念,但由于当时缺少可信的执行环境,智能合约并没有被应用到实际产业中,自比特币诞生后,人们认识到比特币的底层技术区块链天生可以为智能合约提供可信的执行环境,但是比特币对于智能合约的支持仅仅停留在简易脚本的层面上,不具备图灵完备性,所以在比特币里也不能做智能合约的商业应用。

    在 BUMO 系统里,BuVM 虚拟机为智能合约的执行提供了平台级别的支持,智能合约的语言具有图灵完备性,开发者能够利用平台提供的语言,开发一个商业级别的智能合约。BuVM 智能合约存储在区块链中,分布在每一个节点机器上,用户通过交易去触发合约脚本的执行,并把执行的结果写入到区块链中,并通过底层共识功能保证所有数据的一致性。

    合约创建

    合约是创建账号时确定的,即创建账号操作中,就确定了被创建的账号的合约内容。合约创建之后,不允许修改合约代码。

    合约执行

    当一个合约账号收到其他账号转移的资产以后,就会被触发。

    合约模板

    在 BUMO 系统中,合约是账号的属性,定义在 Account 的 contract 字段上。

    合约调试

    在智能合约模块的设计中,我们提供了沙箱环境来进行调试合约,且调试过程中不会更改区块链和合约的状态,可以通过 HTTP 接口 callContract 去来调试智能合约,智能合约可以是公链上已存的,也可以是通过参数上传的合约代码进行测试, 使用 callContract 接口产生交易,也就无需支付上链手续费。

  • 相关阅读:
    Redis主从同步分析
    团队形成的四个阶段
    Firefox 按一下Alt键 出现菜单!
    Android系统手机端抓包方法
    你必须知道的EF知识和经验
    .NET异步编程之回调
    正确设置电脑虚拟内存
    Cache and Virtual Memory
    性能测试指标
    HTTP协议
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313222.html
Copyright © 2011-2022 走看看