Save
Saving
  • B
    brianliu

    一、零知识证明介绍

    1.1 区块链技术在数据隐私保护方面的困境

    区块链技术的特点,就是存储在区块链上的数据,对所有人都是公开、透明、不可篡改的,这是区块链技术能以低成本建立商业信任中心的技术基础。但在实际的商业实践中,比如我们把病人的电子病历放到链上,结果所有人都可以知道该病人得了什么疾病,这显然是不可接受的。所以,对链上数据进行加密保护,是区块链技术应用到商业领域的一个技术刚需。

    传统的数据加密技术,无论是基于对称加密还是非对称加密,其特点就是通过密钥对数据进行加密成乱码,使用者持有对应的密钥就可以解开该份乱码,还原为对应的数据。但在区块链场景下,如果单纯使用传统的加密技术,将加密后的数据上传到区块链上,没有持有对应密钥的各方将完全无法知道该数据的内容,从而丧失了区块链数据公开透明的特点,丧失了建立互信的基础,区块链技术在该情况下的使用价值将大打折扣。

    alt text

    所以,如何既能满足链上商业数据的隐私保护要求,又同时不丧失区块链技术公开透明的特点,是一个区块链技术商业落地中必须解决的核心问题。基于密码学的零知识证明技术就应运而生了。

    1.2 零知识证明的通俗介绍

    零知识证明是上世纪80年代提出的一项密码学技术,其应用目的就是一方在不提供任何有用信息的情况下,使另一方相信某个信息是正确的。我们简单的举个理想化的例子通俗的说明一下零知识证明的作用:小明想向A银行贷款300万元买一套房子,A银行需要小明出具一个存款证明,证明他有300万以上的资产才能给他贷款,小明在B银行有2300万的存款,此时小明有两种选择:

    选择1:找B银行开具一个2300万的存款证明给A银行,证明他有300万以上的资产,但这时小明就暴露了自己的资产数量,这是他不愿意的;

    选择2:小明找B银行开具一个2300万的存款证明,在该证明上盖一张纸,在百万那一位挖一个洞,这时A银行可以看到百万位的数字是3,所以小明的存款是在300万以上的,满足贷款条件,而小明也不需要告诉银行其全部的存款信息。在这个理想化的例子中,小明一方没有提供全部的知识,就向另一方银行A证明了自己的资产大于300万,而盖在存款证明上的那张纸和挖的洞,就可以视为零知识证明在该场景下的实现。

    1.3 零知识证明的技术原理

    上是一个通俗的例子,在实际上,零知识证明是这样定义的:

    一种方法,通过该方法,一方A可以向另外一方B证明A知道一个秘密x,但是又不透露任何x的信息。对于任意逻辑f,有一对密钥,分别为证明密钥pk和验证密钥vk。A持有一些秘密x, 通过该函数f计算生成y,即y=f(x)。利用y和x、pk,可以生成证明proof。任意拿到proof和y, vk的人,都可以通过验证知道y确实是f(x)的输出,而不需要知道x的具体信息。

    1.4 零知识证明应用场景介绍

    零知识证明结合区块链技术,在包括商业数据资产交易流转,商业数据隐私保护等方向具备广阔的发展前景。我们以一个真实的医疗数据交换场景举例,来说明零知识证明在数据交易领域的应用意义:

    场景:A保险公司希望向B医院购买某个年龄段的冠心病患者的相关数据用于该病种的保险精算分析,为了简化商业逻辑,我们假设患者的年龄信息是一个隐私数据,医院不能将其透露给保险公司,而保险公司需要取得年龄在40到90岁之间的患者的数据,在这种情况下,区块链+零知识证明的解决方案,可以有效的支持该场景:

    alt text

    B医院用零知识证明技术的加密模块,对原始患者数据中的年龄列进行加密和存证

    B医院将加密完成后的数据和存证结果(1万份,其中40岁到90岁之间的数据有6800份)上传到Ultrain区块链平台,此时数据已经处于不可篡改状态;

    A保险公司向区块链平台查询年龄段在40岁到90岁之间的冠心病患者的数据,平台返回6800份数据给A保险公司,并使用零知识证明模块证明数据的真实性和完整性

    A保险公司可以通过零知识证明验证模块,验证该数据集:a.每个数据的年龄都是在40岁到90岁之间的;b.平台已经返回了全部的该年龄段的数据;

    A保险公司可以使用该数据用于保险精算分析;

    二、Ultrain可编程零知识证明解决方案

    2.1 现有底层技术分析

    以上我们初步介绍了零知识证明技术,目前常见的主流零知识证明技术包括SNARKs、STARKs、Bulletproofs等,这些技术各有特点:

    alt text

    基于[1]对现有主流零知识证明技术的分析对比,我们目前采用SNARK技术作为Ultrain零知识证明技术的底层技术基础。SNARKs技术目前具备这样的优势:首先该技术是目前区块链链上单个交易性能最好的(聚合验证如SNARK虽然可以大大提升单个交易的平均验证速度,但是只有在非常高的并发交易量的情况下,如675倍,才能发挥作用);其次SNARKs可用代码的成熟度最高(如基于rust的更安全的库),并且有诸多后续改进项目持续提高SNARK的可用性和安全度如Sonic[2]、supersonic[3]、Marlin[4]、Fractal[5]。

    2.2 现有技术存在的问题

    虽然SNARKs具备多种优势,但由于其重点关注于零知识证明核心技术部分的实现,在具体应用时,还存在着较多的问题需要解决,主要集中在三个方面:

    性能差

    SNARKs重点关注在技术实现上,证明过程运算需要消耗大量的计算资源,大大限制了其应用范围和平台可移植性;该技术缺乏足够的性能和成熟的高速库,使得类似最基本的匿名交易都无法在手机端完成交易的创建;无法让节点在短时间完成大规模的交易验证。

    架构弱

    SNARKs在应用架构上存在隐私问题,现有的架构依然部分依赖中心化的服务器,让用户的隐私性方面受到一定的挑战;

    开发部署难

    基于零知识证明的商业解决方案,并不仅仅是引入SNARKs模块就能实现的,需要结合商业场景的隐私保护需求,同存证、加解密、数据授权以及区块链结合,才能形成一套完整的解决方案。同时零知识证明原有的开发步骤非常繁琐,代码编写类似于电路编程,对程序员非常不友好,因而商业落地的时候部署难度比较大。

    2.3 Ultrain可编程零知识证明解决方案架构

    alt text
    Ultrain零知识证明解决方案由两部分组成,客户端以及区块链节点端。

    零知识证明客户端

    零知识证明客户端:负责对用户数据,按客户要求的自定义逻辑进行零知识证明的加密和证明处理,处理完成后的加密数据会提交到区块链节点端保存。我们对客户端进行了大量的优化,可以提供Pribox硬件加速版及手机客户端版。

    Pribox硬件加速版针对于需要对大规模数据进行快速处理的情况,可以做到在TPS 1000的情况下针对15个区块链节点完成零知识证明的证明处理工作;

    alt text

    手机客户端版本,通过大量的代码优化和引入并行计算能力,客户端的运算量降低到传统方法的50%,降低了交易延时,同时突破了原有零知识证明只能应用部署在较高计算能力的服务器节点的限制,有助于将零知识证明的能力直接集成到手机客户端中,极大的扩展了零知识证明的应用范围。

    零知识证明区块链节点端

    零知识证明区块链节点端:负责存储加密的业务数据,同时部署用于访问及验证加密数据的零知识证明智能合约。链上组件采用业界最为成熟的Groth16验证方法,同时支持bls12_381和alt_bn128两种曲线,可以分别针对高安全度应用场景和高性能的应用场景进行深度定制。

    同时,为了解决零知识证明难以开发的问题,我们提供了Ultrain零知识证明SDK组件。开发者通过该SDK组件,可以灵活的针对任意数据/任意逻辑关系,进行开发配置,而无需进行传统的类电子电路编程,可以极大的简化程序员的工作量和编程难度。

    2.4 解决方案技术特点

    业界性能最高的隐私交易

    Ultrain的零知识证明方案,比传统的零知识证明运算速度提升50%,是目前业界性能最高的隐私计算;

    与区块链技术无缝对接

    零知识证明方案需要与区块链技术配合使用,本方案与Ultrain区块链完成无缝对接,链上提供了零知识证明的智能合约的模板,方便用户快速创建存证、数据授权、匿名交易等一系列服务。链下采用性能优化后的电路模板,方便用户进行一键使用,与区块链技术快速对接。

    简单易用的硬件部署方式

    采用硬件pribox的方式部署时,用户只需要将pribox部署在本地,即可调用所有链上相关合约,完成大部分的业务相关使用,支持全周期的金融交易和数据隐私保护。完全避免了传统零知识证明部署复杂繁琐的问题。

    完全离线操作,保护用户数据隐私

    本方案在用户的区块链节点完全断网的情况下,用户依然可以通过自己的私钥,访问本地节点中自己有权限访问的隐私数据,让用户真正拥有自己的隐私数据产权。

    以上我们介绍了Ultrain的可编程零知识证明解决方案。在区块链技术应用到商业环境时,零知识证明技术是一项必不可少的关键技术,我们将在区块链数据隐私保护技术方面持续投入,在pribox硬件加速版方面,我们将会把FPGA以及可信硬件加入到pribox中,通过FPGA实现更高性能的硬件加速,以及通过TEE实现更高安全性的可信计算。在零知识证明SDK方面也会持续优化,提供更方便的开发接口,帮助开发者进一步提升零知识证明的开发效率。

    参考文献:

    [1]现有zkp技术对比 https://github.com/matter-labs/awesome-zero-knowledge-proofs#comparison-of-the-most-popular-zkp-systems

    [2] Sonic: Zero-Knowledge SNARKs from Linear-Size Universal and Updateable Structured Reference Strings https://eprint.iacr.org/2019/099

    [3] Transparent SNARKs from DARK Compilers https://eprint.iacr.org/2019/1229.pdf

    [4] A Marlin is One of the Fastest SNARKs in the Ocean https://www.benthamsgaze.org/2019/09/19/a-marlin-is-one-of-the-fastest-snarks-in-the-ocean/

    [5] Fractal: Post-Quantum and Transparent Recursive Proofs from Holography https://eprint.iacr.org/2019/1076

    posted in 资讯 read more
  • B
    brianliu

    alt text

    以下为 2020 年 6 月 8 日- 7 月 5 日项目进展月报,包含#项目开发进展#、#社区动态更新#两项内容,供社区成员们查看,感谢大家对我们一直以来的热切关注!

    项目进展月报(6/8-7/5)

    项目开发进展

    • Ultrain 基础设施

    1)完成签名多线程验证方案设计,开始进行编码实现以提升系统性能;

    2)完成Ubuntu版本家庭节点的自动化部署设计和实现,并完成首台机器部署;

    3)节点证书管理工具增加国密证书生成以及证书冻结、解冻、吊销等管理功能;

    4)完善隐私保护功能,进一步优化零知识证明客户端功能实现。

    • Ultrain 产品生态

    1)超物系平台上线发布商品视频、定时上架、探店员提现等功能;

    2)支持区块链游戏ForceForFast上线,超物系平台已完成若干相关业务成交订单;

    3)与合作伙伴共同完成区块链企业服务平台一期功能建设并上线运行,目前已入驻近50家企业。

    • Ultrain 开发者套件

    1)完成UltrainOne应用TypeScript版本调试以及下一版本的功能规划和设计;

    2)完成企业客户关于积分功能的需求分析,并支持编码实现。

    社区动态更新

    • Ultrain区块链完成对于国密算法的支持

    密码学是区块链的基础,区块链中大量采用了密码学算法,包括对称加密、非对称加密、单向散列算法、数字签名等技术。为了实现密码学技术的自主可控,中国也定义了自己的国密标准,2020年央行颁布的《金融分布式账本技术安全规范》中,明确要求国内的区块链技术必须支持国密算法。

    Ultrain区块链现已完成对国密算法的支持,符合央行安全规范的全部要求。详情请查看技术科普 | 国密算法在Ultrain区块链中的运用

    • Ultrain 超物系完成多项新功能开发

    近期,Ultrain 独立开发的基于小程序店铺的一站式用户增长技术服务平台超物系已正式新增多项功能,如支持用户直接分享店铺名片、一键复制商品分享文案、单独查看奖励板块、单独查看人脉板块、收藏商品,以及面向商家的支持上传视频功能、支持上架无返利商品等功能,欢迎大家进行体验!

    此外,大家最感兴趣的探店掘金活动仍在火热进行中!邀请各行各业商家入驻开店,即会得到开店奖励,还有永久店铺抽成等着你。欢迎大家扫码参加⬇

    alt text

    alt text

    • Ultrain 多项商业合作有序进行

    近日,Ultrain 超物系平台已支持区块链游戏 ForceForFast 成功上线,并已完成众多相关业务成交订单!同时,我们已与合作伙伴共同完成区块链企业服务平台一期功能建设,并成功上线运行,目前已入驻近50家企业。此外,还有众多商业合作有序进行中,敬请期待!

    以上便是 Ultrain 6 月 8 日至 7 月 5 日的项目进展,敬请期待此后的更多精彩内容!

    posted in 资讯 read more
  • B
    brianliu

    密码学是区块链的基础,区块链中大量采用了密码学算法,包括对称加密、非对称加密、单向散列算法、数字签名等技术。

    为了实现密码学技术的自主可控,中国也定义了自己的国密标准,2020年央行颁布的《金融分布式账本技术安全规范》中,明确要求国内的区块链技术必须支持国密算法。Ultrain区块链现已完成对国密算法的支持,符合央行安全规范的全部要求。

    本文首先介绍了对称加密、非对称加密和数字签名的基本概念,然后重点讲述了非对称加密算法中的椭圆曲线密码技术,最后阐述了国密算法在Ultrain区块链中的运用。针对openssl国密算法签名验签性能低下的问题,Ultrain对算法实现进行了优化,实现了3~4倍的性能提升,相关的优化代码已经提交到openssl Github

    https://github.com/openssl/openssl/issues/11992)。

    01

    对称加密与非对称加密

    1.1 对称加密
    对称加密(symmetric cryptography)是指在加密和解密时使用相同密钥的方式。对称密钥有很多别名,如公共密钥密码,传统密码,私钥密码,共享密钥密码等。图1和图2分别是对称密码加密,解密过程,加密和解密使用相同的密钥,所以称为对称加密。

    alt text

    图1. 对称密码加密

    alt text

    图2. 对称密码解密

    1.2 非对称加密
    非对称加密(asymmetric cryptography)在加密和解密时使用不同密钥,非对称加密也称为公钥加密(public-key cryptography)。它们通常是一对密钥: 公钥(public key)和私钥(private key), 公钥加密后的密文,私钥可以解密;私钥加密后的密文,公钥可以解密。公钥是由私钥推导出来的,且公钥是公开的。非对称加密解决了对称加密过程中,加密密钥的分发问题。一般公钥用于加密,私钥用于解密。当私钥用于加密时,本质就是数字签名(digital signature),即用公钥解密可以验证信息确实为私钥加密结果。公钥密码目前主要有如下几种:

    RSA(Ron Rivest, Adi Shamir和Leonard Adleman的姓氏的首字母组成),该算法利用大质因数分解的困难度。

    EIGamal,由Taher EIGamal设计,与RSA不同,它是利用mod N下求离散对数的困难度。

    Rabin,由M.O.Rabin设计的公钥算法。Rabin方式求平方根的困难度

    椭圆曲线密码(Elliptic Curve Cryptography, ECC),

    今天我们重点讲解的密码学算法,它是通过将椭圆曲线上的特定点进行特殊的乘法运算来实现的,它利用了这种乘法算法的逆运算非常困难这一特性。

    公钥密钥算法较对称加密算法运算慢,所以,数据加密用对称加密算法,而公钥密码算法更多的应用于数字签名场景。

    1.3 数字签名
    某天Alice向Bob发送邮件:“hi,Bob,给我打1000000元,账号是6214 6576 8789 8987 账号名Alice”。在现实生活中,Bob可能会打电话给Alice,确认下邮件是否是伪造;还要确认内容有没有被篡改,防止收款账号和金额被恶意修改;当然还有一种场景,Bob把钱打给了Alice,最后Alice却否认发过这封邮件。

    能够防止上述伪造,篡改和否认等威胁的技术就是前面提过的数字签名。通常消息比较长,我们只对消息的散列值进行签名,所以Alice发送邮件的流程如下:

    1. Alice用单向散列函数计算邮件内容的散列值;

    2. Alice用私钥对散列值进行加密,得到的密文就是Alice对这条散列值的签名,由于只有Alice才持有自己的私钥,所以除了Alice本人,其他人无法生成相同的密文,签出的签名Alice也无法抵赖;

    3. Alice将消息和签名发送给Bob;

    4. Bob用Alice的公钥对收到的签名进行解密的到散列值;

    5. Bob将4中的得到的散列值与Alice直接发送的消息的散列值进行对比。如果两者一致,则签名验证成功,否则验证失败。

    alt text

    图3. 数字签名和签名验证

    02

    椭圆曲线加密算法详解

    上面我们了解了对称加密和非对称加密的基本概念,本节我们主要讲用于数字签名的非对称加密算法中的椭圆曲线技术。

    2.1 基本概念
    2.1.1 阿贝尔群
    在数学中,群是一种代数结构,有一个集合以及一个二元运算+所组成,满足以下条件:

    1. 封闭性。集合内两数进行二元运算,结果仍在集合中。

    2. 结合性。a+b+c = a+(b+c)

    3. 单位元。存在单位元0,使得a+0=0+a=a

    4. 逆元。每个元素都存在相反数,对任意a,必存在b使得a+b=0

    5. 交换律。a+b+c = a+c+b

    2.1.2 椭圆曲线方程

    alt text

    图4. 椭圆曲线[1]

    在密码学中,定义在素数域GFp的椭圆曲线方程为:

    E: y2 = x3 + ax + b 其中, a,b∈GFp且(4a3 + 27b2) mod p != 0

    除了p,a,b定义了曲线之外,通常还需要x, y, n来确定一条椭圆曲线。所以,描述一条有限域上的椭圆曲线,有六个变量:T = (p, a, b, x, y, n).

    p - 素数域内点的个数,p越大越安全,但是伴随着计算量的增大

    a, b - 曲线系数

    x, y - G点的x, y轴坐标

    n - 为素数,且是G点的阶。椭圆曲线上一点P,存在着最小的正整数,使得nP=0∞(原点或无穷远点,以下无穷远点用0表示),则称n为P的阶;若n不存在,我们说P是无限阶。在素数域上,椭圆曲线所有点的阶都存在。

    2.1.3 椭圆曲线上点运算
    素数域椭圆曲线上的点也是阿贝尔群。单位元是无穷远点0。椭圆曲线上点P的逆元是其x轴对称的点。

    P和Q分别为素数域GFp上椭圆曲线两点,它们的连线与椭圆曲线交于第三点R(见图5中情况1),有P + Q + R = 0无穷远点。有几种特殊情况,分别是下图中的2,3,4。第2种情况,直线与Q相切,可以看成Q和Q两点相连,与椭圆曲线相交于P点,即Q + Q + P = 0;第三种P,Q两点与y轴平行,因为两条平行线相交于无穷远点,所以有P + Q + 0 = 0;第四种情况,P和P相连,相交于无穷远点。

    alt text

    图5. 椭圆曲线运算[1]

    根据以上我们有如下结论:

    Q + Q + P = 0即Q + Q = -P, (Q + Q) + (Q + Q) = (-P) + (-P),即以P的对称点-P做切线,以此类推,我们可以快速得到2n*Q点, n∈[0, +∞)。在椭圆曲线用于加密中,私钥就是一个大整数,公钥就是椭圆曲线上的点G与私钥的乘积。我们通过私钥的二进制表示快速计算出公钥。

    2.2 算法运用
    椭圆曲线主要用于数字签名,以下是实现数字签名和签名验证的数学计算过程。

    2.2.1 数字签名和签名验证
    数字签名主要需要消息m的散列值(摘要)h,私钥kA,生成最终的结果{r,s};签名验证主要用到公钥P,消息摘要h。以下是签名生成和验签的计算过程。

    生成签名,即计算r和s的过程

    私钥为大数kA,公钥为私钥与G点相乘的点,P = kAG

    生成随机数小k,计算与基点的乘积K=kG,K点的x轴坐标Kx对椭圆曲线阶n的模Kx(mod n)为r,即r = Kx (mod n)

    计算k基于曲线阶的乘法逆元k-1(mod n)

    r已经在第2步中生成,s=k-1(h+kAr)(mod n)

    签名验证

    计算s基于椭圆曲线阶n的逆元s-1

    计算u1 = hs-1

    计算u2 = rs-1

    计算点Q=u1G+u2*P

    取点Q的x轴坐标Qx,若Qx等于r,即签名过程中K点的x轴坐标Kx,则验证通过。

    证明为什么在验证签名过程中有这个特性?

    根据签名计算可知,s=k-1(h+kAr)(mod n),两边乘k有sk=(h+kAr)(mod n)。

    点Q=u1G+u2*P,又P=KAG,有Q=u1G+u2KAG

    把u1和u2代入,Q=hs-1G+rs-1KAG=(h+rkA)s-1G

    把步1公式代入步骤3中,Q=sk*s-1G = kG,所以,假如{r,s}, h正确,点K和点P有相同的x轴坐标

    2.2.2 椭圆曲线与RSA技术对比优势
    之前我们讲过非对称密码RSA,国密推荐使用椭圆曲线加密,因为椭圆曲线比RSA有一定优势:

    更安全。椭圆曲线基于离散对数困难度,计算复杂度是指数级的,求解难度大。而RSA算法是大质因数分解困难度,计算复杂度是亚指数级的。

    更短的密钥。同等安全程度要求下,椭圆曲线算法比其他公钥算法需要的密钥长度小很多。128bit椭圆曲线算法拥有1024bit RSA算法相同的安全程度。

    2.3 常用几种椭圆曲线
    secp256k1. 在比特币和以太坊网络中,用的是secp256k1,p是256位的素数,k代表Koblitz。a=0,b=7。曲线方程即y2=x3+7。Koblitz椭圆曲线具有一些特殊属性,可以更有效地实现组操作。

    secp256r1. secp256k1的姊妹曲线。p也是256位的素数,但值和secp256k1曲线是不一样的,r代表随机。"随机"选择的参数更安全,然而,有些人怀疑随机系数可能已经被选择来提供后门。因此,比特币网络并没有选择它,而是选择了更高效的secp256k1。

    SM2曲线。SM2是基于前人对ECC研究的基础上,中国推荐的标准曲线。GB/T 35276-2017定义了SM2算法的具体实现。

    03

    国密算法在Ultrain中的应用

    Ultrain区块链对国密算法对支持,除了SM2椭圆曲线外,还应用了SM3, SM4。

    SM3 散列算法,生成256bit的散列值,主要用于替换SHA256算法。

    SM4 对称加密算法,Ultrain钱包公私钥加密用SM4取代了aes128。

    3.1 国密算法实现详解
    上面我们讲解了椭圆曲线的原理,SM2曲线也是建立在其之上,但是也有自己的特点:

    3.1.1 SM2中h值的计算
    在secp256k1中,h就是消息的散列值,而在SM2中,计算h值更复杂,需要分两步计算:

    1. 通过sm3算法计算出Z值:
      Z=SM3(ENTL||ID||a||b||xG||yG||xA||yA)
      ID: 用户身份标志的字符串
      ENTL: 两个字节表示的ID的比特长度
      a, b: 曲线参数
      xG, yG:G点坐标x,y轴
      xA,yA:公钥坐标x,y轴

    2. 使用Z和待签名的消息,通过sm3算出杂凑值h,h=SM3(Z||M)

    3.2 国密算法优化
    3.2.1 openssl SM2曲线性能问题
    我们基于openssl开发SM2的实现,但是使用过程中发现签名和验证速度很慢,在Macbook Pro上,每10秒签名22496次,每10秒验签24374次。定位到EC_POINT_mul速度慢。查看openssl的源代码,它没有对2nG, n∈0, 256这样的点进行预缓存。如私钥二进制为:1000 1100,它对于的公钥就是27G + 23G + 22G,而2G,22G,23G...2256G都是已知的,所以只需要椭圆曲线上3个点的+运算,不需要每次重新计算。除此之外,有部分核心功能需要用汇编编写,优化后性能有3-4倍的提高,如下表。

    alt text

    表1. 性能优化前后对比

    相应的优化代码我们已经提交到openssl Github。

    alt text

    图6. 优化代码提交到openssl Github

    3.2.2 SM2签名和消息无法recover公钥
    在secp256k1我们可以根据签名{r,s}和消息恢复公钥,但是SM2却不能通过签名和消息恢复公钥,因为在SM2的h值计算过程中,我们用到了公钥的坐标,所以必须知道公钥了,和只有签名和消息recover公钥相矛盾。因为SM2无法通过签名和消息recover公钥,所以在对交易验证的过程,我们都是取出公钥然后验证。但是,在我们的系统里,一个账号可以拥有几个公钥,所以需要遍历账号的公钥验证交易,导致多公钥账号的交易执行性能会低些。幸运的是,我们统计系统中所有的账号,99%只有一对公私钥,所以理论上不会对系统整体性能造成影响。

    04

    结论

    本文首先介绍了对称加密和非对称加密的基本概念,然后详细介绍了非对称加密技术中的椭圆曲线加密技术,最后阐述了Ultrain区块链对国密算法的支持,椭圆曲线加密部分的理解对数学基础要求比较高。区块链的去中心化信任建立密码学之上,密码学技术又建立在数学之上,所以说,In Math We Trust。

    参考文献:
    [1]. https://encyclopedia.thefreedictionary.com/elliptic+curve

    posted in 资讯 read more
  • B
    brianliu

    Following is the monthly report on the progress of the project from May. 11th -Jun.7th, which contains two items: project development progress and community dynamic update. It is for the community members to check. Thank you for your attention.

    Technology Update from Ultrain (5/11–6/7)

    Ultrain’s Core Technology

    • Ultrain infrastructure

    1. Complete the development of the Windows version of the family mining machine software, and implement the Windows 10 environment automation deployment tool to complete the internal test;

    2. Node software adds on-chain data compression and encrypted storage, and increases data distributed storage mechanism support;

    3. Improve the certificate system management tool to support encrypted authentication communication between nodes and between the client and the server.

    Ultrain’s Ecosystem

    1. New functions of exporting merchant orders, customizing reward rules, intelligent display of user data and other functions have been released on the S.I.R platform and updated versions have been released;

    2. The S.I.R system completes the product video, custom sharing copy and other function development, and enters the test stage;

    3. Complete the construction and development of the blockchain enterprise service platform and data upload, and complete the development of related systems such as new marketing activities for blockchain games.

    Ultrain Developer Kit

    1. Complete TypeScript refactoring for UltrainOne to improve code readability and maintainability.

    Ultrain’s Latest Community & Event Update

    Ultrain fully introduced its own blockchain certificate management system

    Currently, the mainstream blockchain technology in China is called an open license chain. The license chain refers to the owners of all the nodes that make up the license chain. Their identities are authenticated, and they can only join the blockchain network after being authorized by the license. In this scenario, the network is open to authorized organizations or institutions, and there is a collaborative relationship between the participants on the chain, with an access mechanism. As a complete solution, the PKI/CA system can provide identity authentication certificates for each participant in the license chain to realize access control. It can be said that the certificate mechanism is the cornerstone of the permission chain network security.

    Recently, Ultrain technical experts wrote an article, which describes the Ultrain certificate management system in detail after describing the basic concepts of PKI/CA as necessary.

    Ultrain has completed development of many new functions

    Ultrain independently developed a one-stop user growth technology service platform based on a small program store. The super-item system has completed iterations. It has a variety of powerful tool libraries to support the needs of merchant stores in multiple scenarios: SMS and subscription notifications, merchandise Fission posters, user relationship management … In the future, there will also be functions such as social dynamics and interaction, live broadcast playback, etc.

    At present, Superphysical is engaged in store exploration and nugget activities, inviting merchants from all walks of life to open stores, and you will receive a reward for opening a store. Permanently receive 1% of the order transaction amount as a reward.

    Ultrain is working closely with multiple business partners

    Recently, Ultrain has helped a blockchain game to complete the construction of its marketing system, and has also completed the construction and development of a blockchain enterprise service center and data upload. In addition, there are many business partners in close negotiation and cooperation.

    The above is the progress report of Ultrain from May 11th to Jun 7th, looking forward to more exciting contents after that!

    posted in Activity read more
  • B
    brianliu

    alt text

    以下为 2020 年 5 月 11 日- 6 月 7 日项目进展月报,包含#项目开发进展#、#社区动态更新#两项内容,供社区成员们查看,感谢大家对我们一直以来的热切关注!

    项目进展月报(5/11-6/7)

    项目开发进展

    • Ultrain 基础设施

    1. 完成Windows版本家庭矿机软件开发,并实现Windows10环境自动化部署工具,完成内部测试;

    2. 节点软件增加链上数据压缩以及加密存储,并增加数据分布式存储机制支持;

    3. 完善证书体系管理工具,支持节点间及客户端与服务端加密认证通信。

    • Ultrain 产品生态

    1. 超物系平台新增商家订单导出,自定义奖励规则,用户数据智能展现等功能并发布更新版本;

    2. 超物系完成商品视频,自定义分享文案等功能开发,进入测试阶段;

    3. 完成区块链企业服务中台的建设开发和数据上链,并完成区块链游戏新营销活动等相关系统开发。

    • Ultrain 开发者套件

    1. 完成UltrainOne应用TypeScript重构,提高代码可读性及可维护性。

    社区动态更新

    • Ultrain 全面介绍自身区块链证书管理体系

    目前,在中国主流发展的区块链技术被称为开放许可链。许可链指的是所有组成许可链的节点所有者,其身份都是被认证过,被许可授权后,才能加入到该区块链网络的。在这种场景中,网络向授权的组织或机构开放,链上各参与方之间是一种协作关系,存在准入机制。PKI/CA 体系作为完整解决方案,可以为许可链各参与方提供身份认证证书,实现准入权限控制。可以说,证书机制是许可链网络安全的基石。

    近期,Ultrain 技术专家撰文,对 PKI/CA 基本概念进行必要描述后,详细阐述了 Ultrain 证书管理体系。详情请查看一文全面了解 Ultrain 区块链证书管理体系

    • Ultrain 超物系完成多项全新功能开发

    Ultrain 独立开发的基于小程序店铺的一站式用户增长技术服务平台超物系近期已新增多项功能,如支持商家订单导出、自定义奖励规则、用户数据智能展现,并已完成商品视频、自定义分享文案等功能开发,测试通过后将正式上线,届时欢迎商家们进行体验!

    与此同时,探店掘金活动仍在火热进行中,邀请各行各业商家入驻开店,你就将得到开店奖励,还有永久店铺抽成等着你。欢迎扫码了解更多

    Ultrain超脑信任计算-项目进展月报(5/11-6/7)
    Ultrain超脑信任计算-项目进展月报(5/11-6/7)
    • Ultrain 多个商业伙伴紧密合作中

    alt text

    alt text

    近期,Ultrain 帮助某区块链游戏完成营销系统建设,并已完成某区块链企业服务中台的建设开发和数据上链。此外,还有众多商业伙伴紧密洽谈合作中,敬请期待!

    以上便是 Ultrain 5 月 11 日至 6 月 7 日的项目进展,敬请期待此后的更多精彩内容!

    posted in 资讯 read more
  • B
    brianliu

    Cryptography technology is the cornerstone of information technology. Blockchain uses a lot of technological achievements of modern information security and cryptography, mainly including: hash algorithm, symmetric encryption, asymmetric encryption, digital signature, digital certificate and so on. The hash algorithm solves the problem of information integrity verification, the symmetric algorithm improves the efficiency of encryption operations, the asymmetric algorithm solves the problem of symmetric key transfer, and the digital certificate is endorsed by the public key owner, which solves the problem of the public key holder's proof , PKI / CA system has formed a complete solution to solve information security, information confidentiality, integrity and non-repudiation.

    The current mainstream blockchain technology in China is called an open license chain. What is a license chain? It is the owner of all the nodes that make up the license chain. Their identities are authenticated, and they can only join the blockchain network after being authorized by the license.

    In this scenario, the network is open to authorized organizations or institutions, and there is a collaborative relationship between the participants on the chain, with an access mechanism. As a complete solution, the PKI / CA system can provide identity authentication certificates for each participant in the license chain to realize access control. It can be said that the certificate mechanism is the cornerstone of the permission chain network security. After the necessary description of the basic concepts of PKI / CA, this article elaborated the Ultrain certificate management system in detail.

    01 Public key infrastructure

    Public Key Infrastructure (PKI) is a collection of hardware, software, and policies, which is used to complete the generation, management, storage, distribution, and revocation of keys and certificates based on public key cryptosystem system.

    1.1 PKI system

    The PKI system includes a certificate authority CA (Certificate Of Authority, certification center), a registration authority RA and a corresponding PKI repository. CA is used to issue and manage certificates; RA can be used as a part of CA, or it can be independent. Its functions include personal identity verification, CRL management, key generation, and key pair backup. The PKI repository includes LDAP (Lightweight Directory Access Protocol, LDAP). Lightweight Directory Access Protocol) directory server and common database, used to store and manage user applications, certificates, keys, CRL (Certificate revocation lists) and logs, and provide certain query functions.

    1.2 Certificate application process

    • User application:

    The user generates his own public key and private key, submits the public key and his own identity information to the security server, and the security server transmits the user's application information to the RA server.

    • RA audit:

    The user proves his identity to the RA, and the RA checks after receiving the user's application. If the RA agrees with the user's request for a certificate, digitally sign the certificate application information; otherwise, the user's application is rejected.

    • CA issued certificate:

    The RA transmits the user application and the RA signature to the CA. The CA authenticates the RA digital signature. If the verification is passed, the CA agrees to the user request, issues a certificate, and then outputs the certificate. If the verification fails, the certificate application is rejected.

    • RA forwarding certificate:

    The RA obtains a new certificate from the CA, first outputs the certificate to the LDAP server to provide directory browsing, then notifies the user of the successful issuance of the certificate, informs the certificate of the serial number, and downloads the certificate to the specified website.

    • User certificate acquisition:

    The user uses the certificate serial number to specify the website to download his digital certificate.

    1.3 X.509 certificate format

    The mainstream certificate format is X.509 format. The X.509 standard stipulates what information a certificate can contain and explains how to record the information.

    X.509 structure includes Version Number, Serial Number, Signature Algorithm, Issuer, Validity, Subject, Subject Public Key Information (Subject Public) Key Info), subject public key algorithm (Public Key Algorithm), subject public key (Subject Public Key), certificate signature algorithm (Certificate Signature Algorithm) and certificate signature (Certificate Signature).

    1.4 Certificate verification principle

    1. Use the same hash function for the plain text in the certificate to get the digest value H1.

    2. Use the CA root certificate to verify the signature validity of the client certificate, that is, the signature in the certificate is de-signed with the public key of the CA root certificate, and the de-signed result is compared with H1 in step 1. If they are consistent, the certificate is trusted The root certificate is issued, and the contents of the certificate have not been tampered with.

    3. Check whether the client certificate is valid (the current time is within the validity period defined in the certificate structure).

    4. Check whether the client certificate is invalid (OCSP method or CRL method).

    5. Verify the purpose of the certificate in the client certificate structure.

    All the above information is verified, then the public key information of the client in the certificate can be used in subsequent operations.

    02 Ultrain Certificate Management System

    The authorized nodes of the permission chain form an alliance to share and access data. The PKI system is a complete and mature system for user auditing, identity management and privacy protection. Ultrain defines a set of top-down certificate management processes to achieve permission management and access control of license chain nodes.

    2.1 Ultrain certificate system

    Ultrain uses a CA-oriented access mechanism to implement authentication and dynamic management based on X.509 format certificates. According to the existing business scenario, the certificate system is shown in Figure 2, and includes the following types from top to bottom: root certificate, chain certificate, node certificate, and user certificate.

    Root certificate: The root certificate is a self-signed certificate, which is the root of all certificates, and the corresponding private key file is jointly managed by the alliance committee.

    Chain certificate: In a multi-chain architecture, a single chain management agency generates a chain private key and generates a request file chain.csr to send to the alliance committee. After the alliance committee passes the review, the chain certificate chain.crt is issued.

    Node certificate: The node certificate is issued by a chain certificate. The node generates and saves its own private key file node.key, and generates a request file node.csr and sends it to the chain management agency. After the chain management agency passes the verification, it issues a node certificate node.crt. The node certificate is the identity certificate of the node. The node with the node certificate can establish an SSL link with the node in the blockchain network to achieve encrypted communication between the nodes.

    User certificate: The user certificate is issued by the node that provides the chain access interface. The user generates and saves his own private key file sdk.key, and generates a request file sdk.csr and sends it to the node management organization that needs to be accessed. After the node management organization passes the verification, the user certificate sdk.crt is issued. The user certificate is the client's identity credential, and the client with the user certificate can access the link port normally.

    Ultrain provides a set of certificate application issuance management procedures to facilitate the application, verification and issuance of certificates at all levels.

    替代文字

    2.2 Certificate usage scenarios and verification

    The root certificate is jointly managed by the Ultrain Alliance Committee. At present, it uses a self-signed certificate. It can also be connected to a commercial certificate issuing agency and use a certificate issued by an authority. When the business needs to establish a new side chain, the side chain management agency submits the certificate request file, and the alliance committee uses the root certificate to issue the chain certificate after the alliance committee passes the review; the chain certificate is managed by the chain management committee, and the chain management committee receives the alliance member to become the operation The node certificate request file is issued by the committee after the committee passes the review; the alliance members use the node certificate to access the side chain node network before they can send and receive consensus and transaction information normally. If the node provides an on-chain data access interface, a user certificate needs to be issued to the client for use; the client uses the user certificate issued by a specific node to access the data interface provided by the node for data reading, transaction sending, etc. operating.

    Node certificate verification

    Node certificates are used when building chains between nodes. After the link based on certificate verification is established, the node can form a P2P network, so as to achieve the spread of consensus protocol information and transaction information. The following figure shows the process of using the node certificate.

    替代文字

    When a node is started, carrying its own node certificate can establish an SSL secure link with a node that also has the node certificate. When the certificate expires and is tampered with, it cannot be added to the P2P network, so the data on the chain cannot be shared and propagated.

    In Ultrain's certificate revocation (CRL) management system, the revocation of the certificate is completed by the certificate issuing authority. Nodes can periodically obtain the CRL list from the CA Management Center. Heartbeat messages between nodes need to carry their own node certificates. When the node certificate is not carried or the carried certificate is in the CRL list, the heartbeat message detection end will actively tear down the link with the detected end to achieve real-time access management control .

    User certificate verification

    When the client accesses the link port provided by the node, it can choose to verify the node certificate to verify the identity of the node. In this case, a certificate chain composed of a root certificate and a chain certificate needs to be used to verify the node certificate. In addition, the client needs to provide the user certificate to the node. The node's HTTPS service will verify the user certificate provided by the client (using the root certificate, chain certificate and node certificate to form the certificate chain for verification), and will also check the CRL revocation list , When the verification is passed and the user certificate is not in the CRL list, the SSL link is successfully established for normal communication, otherwise the link cannot be established, thereby ensuring the security of communication between the client and the node.

    posted in Activity read more
  • B
    brianliu

    密码学技术是信息技术的基石,区块链中大量使用了现代信息安全和密码学的技术成果,主要包括:哈希算法、对称加密、非对称加密、数字签名、数字证书等。哈希算法解决了信息完整性验证问题,对称算法提高了加密运算效率,非对称算法解决了对称密钥传递问题,数字证书则为公钥所有者背书,解决了公钥持有者的证明问题,PKI/CA 体系形成了解决信息安全、信息机密性、完整性和抗抵赖的完整解决方案。

    目前在中国主流发展的区块链技术被称为开放许可链,什么叫做许可链呢?就是所有组成许可链的节点所有者,其身份都是被认证过,被许可授权后,才能加入到该区块链网络的。

    在这种场景中,网络向授权的组织或机构开放,链上各参与方之间是一种协作关系,存在准入机制。PKI/CA 体系作为完整解决方案,可以为许可链各参与方提供身份认证证书,实现准入权限控制。可以说,证书机制是许可链网络安全的基石。本文对 PKI/CA 基本概念进行必要描述后,详细阐述 Ultrain 证书管理体系。

    01

    公钥基础设施

    公钥基础设施(Public Key Infrastructure,简称 PKI)是一个包含硬件、软件和策略等集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能的完整系统。

    1.1 PKI 系统

    PKI 系统包括证书机构 CA(Certificate Of Authority,认证中心)、注册机构 RA 和相应的 PKI 存储库。CA 用于签发并管理证书;RA 可作为 CA 的一部分,也可以独立,其功能包括个人身份审核、CRL管理、密钥产生和密钥对备份等;PKI 存储库包括 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)目录服务器和普通数据库,用于对用户申请、证书、密钥、CRL(Certificate revocation lists)和日志等信息进行存储和管理,并提供一定的查询功能。

    alt text
    图1 PKI系统

    1.2 证书申请过程

    • 用户申请:

    用户生成自己的公钥和私钥,将公钥和自己的身份信息提交给安全服务器,安全服务器将用户的申请信息传送给 RA 服务器。

    • RA 审核:

    用户向 RA 证明自己的身份,RA 收到用户的申请后进行核对。如果 RA 同意用户申请证书的请求,则对证书申请信息做数字签名;否则拒绝用户的申请。

    • CA 发行证书:

    RA 将用户申请和 RA 签名传输给 CA,CA 对 RA 数字签名做认证,如果验证通过,则同意用户请求,颁发证书,然后将证书输出。如果验证不通过,则拒绝证书申请。

    • RA 转发证书:

    RA 从CA 得到新的证书,首先将证书输出到 LDAP 服务器以提供目录浏览,再通知用户证书发行成功,告知证书序列号,到指定的网址去下载证书。

    • 用户证书获取:

    用户使用证书序列号去指定网址下载自己的数字证书。

    1.3 X.509 证书格式

    主流的证书格式为 X.509 格式。X.509 标准规定了证书可以包含什么信息,并说明了记录信息的方法。

    X.509 结构中包括版本号(Version Number)、序列号(Serial Number)、签名算法(Signature Algorithm)、颁布者(Issuer)、有效期(Validity)、主体(Subject)、主体公钥信息(Subject Public Key Info)、主体公钥算法(Public Key Algorithm)、主体公钥(Subject Public Key)、证书签名算法(Certificate Signature Algorithm)和证书签名(Certificate Signature)。

    1.4 证书验证原理

    1. 对证书中的明文利用相同的散列函数得到摘要值 H1。

    2. 用 CA 根证书验证客户证书的签名合法性,即证书中的签名用 CA 根证书的公钥解签,解签的结果与步骤 1 中的 H1 对比,如果一致,说明证书是由信任的根证书签发,且证书的内容没有被篡改。

    3. 检查客户证书是否有效 (当前时间在证书结构中的所定义的有效期内)。

    4. 检查客户证书是否作废 (OCSP 方式或 CRL 方式)。

    5. 验证客户证书结构中的证书用途。

    上述所有信息都验证通过,那么证书中客户的公钥信息就能够在后续的操作中使用。

    02

    Ultrain 证书管理体系

    许可链经过授权的节点组成联盟从而共享和访问数据。PKI 体系是一套用户审核、身份管理和隐私保护的完整的、成熟的体系,Ultrain 定义了一套从上而下的证书管理流程,从而实现许可链节点的权限管理和访问控制。

    2.1 Ultrain 证书体系

    Ultrain 采用面向 CA 的准入机制,实现基于 X.509 格式证书的认证和动态管理。根据现有业务场景,证书体系如图 2 所示,自上而下包含以下类型:根证书、链证书、节点证书和用户证书。

    根证书:根证书是一个自签名的证书,为所有证书的根,对应的私钥 key 文件由联盟委员会共同管理。

    链证书:在多链架构中,单链管理机构生成链私钥,并生成请求文件 chain.csr 发送给联盟委员会,联盟委员会审核通过后签发链证书 chain.crt。

    节点证书:节点证书由链证书签发。节点生成并保存自己的私钥文件 node.key,并生成请求文件 node.csr 发送给链管理机构,链管理机构审核通过后签发节点证书 node.crt。节点证书是节点的身份凭证,拥有节点证书的节点能够与区块链网络中节点建立 SSL 链接,实现节点间的加密通信。

    用户证书:用户证书由提供链访问接口的节点签发。用户生成并保存自己的私钥文件 sdk.key,并生成请求文件 sdk.csr 发送给需要访问的节点管理机构,节点管理机构审核通过后签发用户证书 sdk.crt。用户证书是客户端的身份凭证,拥有用户证书的客户端才能正常访问链接口。

    Ultrain 提供了一套证书申请签发管理程序,方便各级证书的申请、验证及签发。
    alt text

    图2 Ultrain 证书体系

    2.2 证书使用场景及验证

    根证书由 Ultrain 联盟委员会共同管理,目前采用自签名证书,也可以与商业证书签发机构对接,使用权威机构签发的证书。当业务需要建立新的侧链时,该侧链管理机构提交证书请求文件,联盟委员会审核通过后使用根证书签发链证书;链证书由该链管理委员会进行管理,链管理委员会接收联盟成员成为运行节点的证书请求文件,委员会审核通过后签发节点证书;联盟成员使用节点证书以接入该侧链节点网络,才可以进行共识及交易信息的正常收发。如果该节点提供链上数据访问接口,则需签发用户证书提供给客户端使用;客户端使用特定节点签发的用户证书,才可以正常访问该节点提供的数据接口,进行数据读取、交易发送等操作。

    节点证书验证

    节点证书在节点间建链时使用。基于证书验证的链接建立之后,节点才能组成 P2P 网络,从而实现共识协议信息和交易信息的传播,下图为节点证书的使用流程。

    alt text

    图3 Ultrain 节点证书验证流程

    节点在启动时,携带自己的节点证书可以与同样拥有节点证书的节点建立 SSL 安全链接。当证书过期、被篡改时,不能加入到 P2P 网络中,从而不能共享和传播链上数据。

    在 Ultrain 的证书吊销(CRL)管理体系中,证书的吊销由该证书签发机构完成。节点可以向 CA 管理中心定期获取 CRL 列表。节点间的心跳报文中需携带自己的节点证书,当不携带节点证书或携带的证书在 CRL 列表时,心跳报文检测端会主动拆掉与被检测端的链接,实现实时的接入管理控制。

    用户证书验证

    客户端访问节点提供的链接口时,可以选择校验节点证书,以验证节点身份,此时需使用根证书、链证书组成的证书链对节点证书校验。另外,客户端需提供用户证书给节点,节点的 HTTPS 服务会校验客户端所提供的用户证书(使用根证书、链证书以及节点证书组成的证书链进行校验),同时会检查 CRL 吊销列表,校验通过且该用户证书不在 CRL 列表时,则成功建立 SSL 链接,进行正常通信,否则则不能建立链接,从而保证了客户端与节点间的通信安全。

    posted in 资讯 read more
  • B
    brianliu

    Ultrain Monthly Report(4.13–5.10)

    Following is the monthly report on the progress of the project from Apr. 13th -May.0th, which contains two items: project development progress and community dynamic update. It is for the community members to check. Thank you for your attention.

    Technology Update from Ultrain (4/13-5/10)

    Ultrain's Core Technology

    1. Complete the node code to support the development of the national secret algorithm switching function;

    2. Complete the development and deployment test of the light node world state Merkel verification scheme code;

    3. The performance of the OpenSSL national secret component SM2 is optimized, and the performance of verification is increased by 400%;

    4. The system contract is increased to provide a new solution for large-volume lock-up;

    5. Develop a new solution for the Windows version of the family mining machine;

    6. The system adds a transaction signature verification preprocessing and caching mechanism, and the overall TPS of the system is increased by 30%.

    Ultrain’s Ecosystem

    1. S.I.R. completes the development of the shop assistant activity and officially launches it;

    2. A new version of the S.I.R Merchant is released in the background, with online fund management, commodity management, store opening assistance and other functions;

    3. Complete the technical docking of the blockchain game stationed in the S.I.R system, and complete the preparation of the business online.

    Ultrain Developer Kit

    1. Complete U3 SDK to add national secret algorithm to support code development and testing;

    2. Complete the reconstruction of UltrainOne code and upgrade to use the latest version of RN.

    Ultrain’s Latest Community & Event Update

    Ultrain released "Adaptive Dynamic Networking" function on time

    On April 15, Ultrain successfully completed the release of the "Adaptive Dynamic Networking" function according to the planning of the 2020 technology roadmap. The code was released on Github as follows:

    https://github.com/ultrain-os/ultrain-core-production/tree/4.0.0

    This article describes in detail how Ultrain's "adaptive dynamic networking" function is designed technically, welcome to read the original text, technical breakthroughs | Adaptive dynamic networking method to improve the efficiency of blockchain consensus.

    Ultrain S.I.R. completed version iteration

    Ultrain independently developed a one-stop user growth technology service platform based on a small program store. The super-item system has completed iterations. It has a variety of powerful tool libraries to support the needs of merchant stores in multiple scenarios: SMS and subscription notifications, merchandise Fission posters, user relationship management ... In the future, there will also be functions such as social dynamics and interaction, live broadcast playback, etc.

    At present, Superphysical is engaged in store exploration and nugget activities, inviting merchants from all walks of life to open stores, and you will receive a reward for opening a store. Permanently receive 1% of the order transaction amount as a reward.

    alt text
    alt text

    Ultrain co-founder & CEO Guo Rui was interviewed by technology practitioners

    Recently, Guo Rui, co-founder and CEO of Ultrain, was interviewed by "Technologists" to discuss the opportunities that the blockchain industry can grasp in the new infrastructure environment, and said that the public chain is the key to building a new type of trust relationship.

    "Technology Walker" is an intelligent information service platform dedicated to recording and promoting AI industry applications, industrial development, technological innovation and AI Democracy. This time, the "Blockchain Revelation" column was launched to visit blockchain practitioners. In order to discover new opportunities and bring inspiration to the blockchain industry, Guo Rui is an important member of the interviewees.

    alt text

    Ultrain technical in-depth article released

    Recently, Ultrain technical experts wrote a special article to explain how Ultrain can reduce the cost of running full-node blockchain and expand the application scenarios of blockchain technology. On the basis of them, a new light node scheme is proposed, which can not only meet the functional requirements of verifying the specific value of the account at a certain time when the verification transaction has occurred, but also meet the performance and robustness requirements of the consensus. The performance is more than 10 times that of the Ethereum solution.

    The above is the progress report of Ultrain from Apr 13th to May 10th, looking forward to more exciting contents after that!

    posted in Activity read more
  • B
    brianliu

    替代文字

    以下为 2020 年 4 月 13 日- 5 月 10 日项目进展月报,包含#项目开发进展#、#社区动态更新#两项内容,供社区成员们查看,感谢大家对我们一直以来的热切关注!

    项目进展月报(4/13-5/10)

    项目开发进展

    • Ultrain 基础设施

    1. 完成节点代码支持国密算法切换功能开发;

    2. 完成轻节点世界状态默克尔校验方案代码开发并部署测试;

    3. OpenSSL国密组件SM2性能优化,验签性能提高400%;

    4. 开发Windows版本家庭矿机新解决方案;

    5. 系统增加交易签名验证预处理和缓存机制,系统整体TPS提高30%。

    • Ultrain 产品生态

    1. 超物系完成探店员活动相关开发并正式上线;

    2. 超物系商家后台发布新版本,上线资金管理,商品管理, 开店帮助等功能;

    3. 完成区块链游戏入驻超物系的技术对接,完成业务上线准备工作。

    • Ultrain 开发者套件

    1. 完成U3 SDK增加国密算法支持代码开发及测试工作;

    2. 完成UltrainOne代码重构,升级使用最新版本RN。

    社区动态更新

    • Ultrain 按时发布“自适应动态组网”功能

    4月15日,Ultrain按2020年技术路线图的规划,顺利完成了“自适应动态组网”功能的发布,代码发布在Github的如下TAG:https://github.com/ultrain-os/ultrain-core-production/tree/4.0.0

    本文详细介绍了Ultrain的“自适应动态组网”功能在技术上是如何设计的,欢迎戳原文阅读技术突破 | 提高区块链共识效率的自适应动态组网方法

    • Ultrain 超物系完成版本迭代

    Ultrain 独立开发的基于小程序店铺的一站式用户增长技术服务平台超物系完成版本迭代,具备多种强大的工具库用以支持商家店铺在多种场景下的需求:短信及订阅通知、商品裂变海报、用户关系管理... ...未来还将有社交动态及互动、直播观看回放等功能陆续上线。详情请戳我,一线城市打工族,工资6K,副业2W... ...

    目前超物系正火热进行探店掘金活动,邀请各行各业商家入驻开店,你就将得到开店奖励,与此同时,从今往后你邀请入驻的店铺每交易成功一笔,你都将永久获得订单成交金额的 1% 作为奖励。欢迎扫码了解更多

    替代文字

    替代文字

    Ultrain 联合创始人&CEO郭睿接受科技行者采访

    近期,Ultrain 联合创始人&CEO 郭睿接受“科技行者”采访,谈论新基建环境下区块链行业可以把握的机会,并表示公链才是构建新型信任关系的关键所在。

    “科技行者”是一个只谈智能的信息服务平台,致力于记录并推动 AI 行业应用、产业发展、技术创新和 AI Democracy,此次推出《区块链启示录》栏目,遍访区块链从业者以期从中发现新机遇、为区块链行业带来启示,而郭睿便是受访者其中重要一员。欢迎感兴趣的朋友们戳原文阅读新基建,新商业:用区块链构建新信任生态 。

    替代文字

    Ultrain 技术深度文章发布

    近日,Ultrain 技术专家特撰文讲解 Ultrain 如何降低运行区块链全节点成本、扩大区块链技术应用场景,表示比特币和以太坊用以解决此类问题的方案都存在一定的不足,而Ultrain在它们的基础上,提出了新的轻节点方案,既可以满足验证交易发生过和验证某个时刻账户的具体数值的功能性要求,同时也能满足共识在性能和健壮性方面的要求,其中在性能方面是以太坊方案的10倍以上。全文通用干货,欢迎戳原文阅读 如何降低运行区块链全节点成本?这里有全新轻节点方案

    以上便是 Ultrain 4 月 13 日至 5 月 10 日的项目进展,敬请期待此后的更多精彩内容!

    posted in 资讯 read more
  • B
    brianliu

    随着区块链网络的运行,节点数据量越来越大,运行区块链全节点的成本越来越高,现在一个区块链的全节点,区块数据存储量动辄就要几百G到上T,一方面直接导致运行全节点的区块链计算机的存储成本极大提高,如果我们想把区块链节点跑在一台普通PC上,光区块链数据就使用了普通PC一大半的硬盘存储空间,这显然是很难让人接收的;一方面也大大限制了区块链技术的应用场景,无论是手机还是IoT物联网设备,现在都不具备加载几T存储硬盘的能力。

    为了解决这个问题,不同的区块链平台都提出了各自的轻节点解决方案,其中比较典型的是比特币的SPV方案和以太坊的状态校验方案。但是这两种方案都存在一定的不足,比特币的SPV方案可验证交易确实发生过,但无法验证在某个时刻账户的具体数值;以太坊的状态校验方案即可以验证交易发生过,也可以验证某个时刻账户的具体数值,但由于该方案需要将数据写入块头,导致共识的性能下降以及健壮性降低。

    Ultrain在比特币的SPV方案和以太坊的状态校验方案基础上,提出了新的轻节点方案,既可以满足验证交易发生过和验证某个时刻账户的具体数值的功能性要求,同时也能满足共识在性能和健壮性方面的要求,其中在性能方面是以太坊方案的10倍以上。

    采取轻节点模式的节点不需要同步巨量的区块数据,利用世界状态默克尔校验方式,节点不需要重放历史区块即可校验状态的正确性,从而可以使能更多应用场景(比如在资源受限的嵌入式设备运行轻节点等)。本文将从世界状态校验问题引出,比特币SPV方案,以太坊世界状态校验方案以及Ultrain所采取的具体方案等方面对轻节点世界状态校验技术方案进行详细阐述。

    一、 节点同步数据量

    区块链节点网络可以理解为一个分布式的状态机,各个节点从相同的创世状态开始,根据每个区块内包含的交易,将创世状态逐块更新,形成不断更新的世界状态。随着时间的推移,每个节点本地存储的数据会不断增长,主要包括历史区块数据以及不断更新的世界状态数据。比特币创世至今135个月(2009/01~2020/03)所生产的区块累积数据量已经达263.6GB,且现在以每个月四个多GB的速度在增长。

    alt text

    图1 比特币区块大小(https://btc.com/stats/block-size)

    以太坊全节点以full模式进行同步时(节点会从网络同步所有的区块头,区块体并重放区块中的交易以生成世界状态数据),当前需同步的数据已经达到两三百GB,如对历史世界状态进行archive,则数据量已经超过4T。以太坊节点还支持fast模式进行同步,该模式与full模式的区别在于不重放区块中的交易去重构世界状态,而是从网络同步状态数据。此外,以太坊节点也支持light同步模式,此种模式下节点仅同步区块头数据,不同步区块体和状态数据,仅在需要相应的区块和状态时去从网络上获取。

    alt text

    图2 以太坊全节点同步数据量(https://etherscan.io/chartsync/chaindefault)

    alt text

    图3 以太坊全节点Archive模式数据量

    https://etherscan.io/chartsync/chainarchive)

    从以上比特币和以太坊的数据我们可以看出,部署运行一个全节点所需同步的数据量越来越大,从而导致节点机器硬件规格要求以及网络带宽门槛越来越越高。一个新节点需要花数天时间才能完成历史数据同步,然后才能开始参与共识过程进行出块。运行全节点成本比较高,在比特币白皮书中提到了轻节点可采用的SPV方案,可以在不同步全部区块数据的情况下,也能进行支付验证。这里的支付验证,只是验证该笔交易支付发生过,并不是验证交易的合法性(比如账户余额是否大于转账金额等)。

    二、 比特币SPV方案

    比特币白皮书中描述了SPV ( Simple Payment Verification ),即简单支付验证。SPV是一个在轻节点环境下,不用运行全节点、只需保存所有的区块头,就能验证支付有效性的技术方案。比特币中区块结构分为区块头和区块体两部分,区块头包含区块的必要属性,仅 80 字节大小;区块体包含当前区块下的所有交易,一般一个区块包含成百上千笔交易,每笔交易一般要 400 多字节。

    alt text

    图4 比特币区块结构

    如图4所示,比特币使用了默克尔树的数据结构来组织区块体内包含的交易:将区块内所有交易成对分组,并对交易进行哈希处理,然后对所得的哈希继续进行哈希处理,重复此过程,直到只剩下一个哈希,称为默克尔根(merkle root)。默克尔树底部的节点,就是交易数据的哈希值。每一个父节点,都是两个子节点哈希值组合后的哈希值。通过层层往上计算,最终算得根节点。这个默克尔根数值存储于比特币的区块头中。

    轻节点从区块链网络上获取了最长链上的所有区块头并在本地进行存储后,即可进行进行SPV支付验证:轻客户端首先计算待验证支付交易的哈希值;然后定位到包含该交易哈希所在的区块,并从区块中获取构建待验证支付交易默克尔树所需的哈希值序列;根据待校验交易的哈希值以及其所需哈希值序列,计算出默克尔根;将计算所得默克尔根数值与区块头中的默克尔根进行比对,如相等则证明交易是真实存在的。

    比特币区块头的大小始终是固定的80个字节,每小时出块约为6个,每年出块52560个,则每年新增的存储量约为4M 字节,SPV方案极大节省了轻节点的存储空间。从上述过程我们可以看出,比特币的这种SPV方案,仅确保校验的交易确实发生过,但不能用来校验交易所导致的世界状态的变化。以太坊在区块头中存储了交易的默克尔根数值,可以适用类似比特币的SPV方案;此外以太坊的区块头中还存储了世界状态的默克尔根数值,可以用来进行世界状态数值的校验。

    三、 以太坊世界状态校验方案

    以太坊的账户包含四个属性,nonce,balance,storageRoot和codeHash;以太坊用stateObject来管理账户状态,账户以Address为唯一标示;所有账户对象逐一插入Merkle-PatricaTrie(MPT)结构里,形成stateTrie。区块头数据结构中的Root字段存储了stateTrie的root数值,即世界状态的哈希值。

    alt text

    图5 以太坊区块头世界状态哈希字段

    我们假设在以太坊区块链上有两个账户A和账户B,初始账户余额均为10个以太币,在编号为1000的区块中发生过这样一笔交易:账户A向账户B转账一个以太币,将账户A的余额修改为9个以太币,账户B的余额修改为11个以太币(不考虑矿工费)。在与比特币SPV类似的以太坊的轻客户端中,我们可以利用在区块编号为1000块的块头中存储的交易的默克尔根数据,校验确实发生过账户A向账户B转账一个以太币这样一笔交易,但是仅利用交易的默克尔根数据,不能校验账户A的余额是不是9个以太币(或者账户B的余额是不是11个以太币),即不能校验世界状态的具体数值。

    在以太坊的区块头的世界状态默克尔根数值(字段Root)可以用来完成世界状态具体数值的校验。该字段为以太坊StateDB中的“state Trie”的根节点的RLP哈希值。区块中,每个账户以stateObject对象表示,账户以Address为唯一标示,其信息在相关交易(Transaction)的执行中被修改。所有账户对象可以逐个插入一个Merkle-PatricaTrie(MPT)结构里,形成“state Trie”。

    以太坊EIP-1186中增加了eth_getProof接口用于返回账号(account)及其状态(storage values)的默克尔校验所需的信息(merkle path),用于完成世界状态数值校验。eth_getProof有三个输入参数:

    1. DATA: 20字节 – 为账户的地址(外部账户/合约账户)

    2. ARRAY:32字节 – 为代校验状态数据的地址

    3. QUANTITY|TAG: – 为指定的区块编号或者字符串"latest" 或 "earliest"

    alt text

    图6 以太坊eth_getProof接口请求参数

    该接口返回数据如下:

    1. balance:账户余额

    2. codeHash:合约账户代码哈希数值,外部账户则返回固定数值

    3. nonce:账户nonce值,表示发了多少笔交易或创建了多少个合约

    4. storageHash:状态数值的默克尔根数值

    5. accountProof:账户校验所需的默克尔序列数组

    6. storageProof:状态数值校验所需的信息数组,包括以下字段:

    Ø key:状态数值对应地址

    Ø value:状态具体数值

    Ø proof:状态数值校验所需的默克尔序列数组

    alt text

    图7 以太坊eth_getProof接口返回数据

    轻节点通过eth_getProof接口获取上述返回信息后,首先根据返回的四个属性值[nonce, balance, codeHash,storageHash]构建账户对象,进行RLP编码后进行哈希操作,得到的数值与accountProof结合可以与在区块头中存储的世界状态默克尔树根数值进行校验;校验通过后,则相当于确认了storageHash字段的正确性,再结合storageProof中的默克尔序列可以完成对状态数值的校验。相关校验示例代码如下所示:

    alt text

    图8 以太坊状态校验示例代码

    四、 Ultrain世界状态校验方案

    以太坊采用MPT树(Merkle-PatricaTrie)管理所有账户对象,stateTrie存储了所有账户的信息,比如余额,发起交易次数,虚拟机指令数组等信息,随着每次交易的执行,stateTrie 其实一直在变化,区块内所有交易完成后,所有账户信息的即时状态的默克尔根数值会记录到区块头中。

    Ultrain采用chainbase存储所有世界状态信息,区块内交易执行会更新chainbase内相关对象的状态数值,因此chainbase内存储了世界状态的实时信息。客户端通过链上接口(get_table_records)查询chainbase内信息时,实际上是信任接口提供方,从而信任其提供的数据的正确性;且该接口只能提供实时状态信息,不能查询指定块高状态数值。Ultrain世界状态校验方案可指定块高查询状态信息,并提供该状态信息校验所需的默克尔路径信息,从而去除对接口提供方的信任依赖。

    Ultrain世界状态校验方案中,每个矿工节点在区块交易执行结束时,将本区块内所有交易对世界状态所做的所有修改(即对chainbase内存储数据的修改)进行序列化处理,并按一定顺序组织为默克尔树的叶子节点,再逐层计算得出该区块世界状态变化的默克尔根数值,计算所得的默克尔根数值会保存到内存中。当区块高度到一定间隔(比如每100块)时,将间隔内所有区块的世界状态变化的默克尔根数值再做一次默克尔根数值计算,并将该结果(称之为世界状态变化累计默克尔根数值)以及间隔内每个区块的块高与对应的默克尔根数值写入文件系统。为防止对主线程性能造成影响,这部分逻辑采用单独的线程完成。所有矿工节点会将世界状态变化累计默克尔根数值通过链上交易写入系统合约,只有超过2/3矿工汇报相同默克尔根数值时,该数值才会生效。

    为提供世界状态校验查询功能,需设置提供世界状态查询服务的节点。选取非矿工节点(即只接收交易和区块,不参与共识过程的节点)在每个区块内交易执行完全结束后,将该区块内所有对世界状态的修改序列化后存储到文件系统,并响应校验查询节点的数据请求,将状态变化数据发送给查询节点进行存储。查询节点采用rocksdb将每个区块对世界状态的修改进行存储,包括块高(block_num),修改序号(sequence),修改内容(修改后的具体状态内容);查询节点在存储每块数据的同时,与矿工节点类似计算每个区块对应的世界状态变化的默克尔根数值,并将该数值存储到rocksdb中。此外,查询节点为轻节点提供查询接口,响应其查询请求。

    alt text

    图9 Ultrain世界状态校验查询节点与非矿工节点交互

    轻节点对特定世界状态进行查询校验的时候需经过如下三个步骤:

    1)首先采用 get_table_rows接口查询具体世界状态数值,该接口需输入要查询的世界状态所在的数据表信息(code,scope,table)以及限定的区块块高信息:

    alt text

    返回数据包括该条状态的具体信息(如示例中data字段的账户余额)以及该信息对应的二进制字节(示例中的raw字段,该字段也可以由轻节点根据合约的ABI文件自己生成);此外,该接口会返回这条世界状态修改对应的块高(block_num)及序号信息(sequence)。

    alt text

    2)根据get_table_rows接口返回的块高及序号信息,获取对应的校验该状态所需的默克尔树序列信息,轻节点调用如下接口:

    alt text

    该接口返回的paths字段即为默克尔树序列信息:

    alt text

    3)根据get_table_rows返回的raw数据以及get_table_row_proof返回的paths数据,轻节点可以调用如下接口,计算默克尔树根数值(轻节点也可以自己实现根据raw和paths数据计算默克尔根的逻辑):

    alt text

    该接口返回计算所得的默克尔根数值,该值可以与矿工节点通过交易写入系统合约的对应的数值进行比对,相同则表示校验通过(该示例中发生世界状态改变的区块高度为34186,如矿工节点所选取的区块间隔为100的话,则应该从系统合约读取块高34200对应的默克尔根数值进行比对)。

    alt text

    综上所述,轻节点与查询服务节点交互流程如下图所示:

    alt text

    文中所述比特币的SPV方案,以太坊的状态校验方案以及Ultrain的状态校验方案,我们可以看到轻节点不需要再同步大量的数据,即可验证交易确实发生过,以及验证在某个时刻世界状态具体数值,由此轻节点所需的存储及计算资源大幅降低,可以在资源受限的嵌入式设备上运行轻节点,比如物联网设备,实现物联网与区块链技术的结合,使能更多商业场景。

    posted in 资讯 read more