深入浅出:一条数据是如何完成上链的

哆哆区块链 2020-06-03 15:36:26

专栏介绍:本系列文章是荷月科技在过去几年中为企业或政府提供区块链解决方案所得到的一些经验总结,也是我们在区块链技术应用这一过程中的一些思考。我们希望使用区块链技术帮助企业或政府降低信任成本,开拓新的业务机会,荷月科技是一个求真务实的团队,希望这些分享与沟通能切实的帮助企业更好的应用区块链技术。

——荷月科技 罗蔚

作者介绍:

朱天阳:荷月科技开发工程师,曾参与中国电子技术标准化研究院牵头的《中国区块链与物联网融合创新应用蓝皮书》、《区块链数据格式规范》标准、《中国区块链技术和应用发展研究报告(2018)》等行业标准及白皮书。在区块链架构,应用开发等具有丰富的经验。

正文

一笔业务数据在区块链处理的流程大致分为三个阶段:分别是上链前处理阶段、链上处理阶段和智能合约处理阶段。

一.上链前处理阶段

业务数据上链前需要将业务数据处理,并且对信息进行签名。这些过程可以通过对应的工具,比如序列化工具和各种椭圆曲线的签名工具来完成,不过更多的时候是通过将各种工具集成的SDK来完成,以太坊的web3就是比较典型的上链前处理的开发工具。

业务数据处理

业务数据可以是任意的内容,比如物流信息、商品交易或物联网设备上传的数据或者对应数据的哈希值等等。这些业务数据既可以通过服务器处理,也可通过物联网设备的边缘计算系统处理。

以存证用的物流数据举例,首先对业务数据不需要进一步处理或者简单计算一下哈希值,然后将调用函数的信息加上链数据放入交易结构体的相关部分当中即可。签名前的交易结构体是由链决定的,不过一般都包含调用的合约、时间戳、随机数和调用函数加数据的信息。将签名前的数据拼装好之后,会进一步序列化以便消息传递。

对于一些隐私交易,需要用到同态加密或者零知识证明等算法,此时业务数据则需要经过更复杂的加工过程,比如数字经过处理可以变成一个乘方求模的大数或者椭圆曲线上的点,但是拼装和序列化等过程还是相同的处理方式。

信息签名

签名前的数据处理好之后,对该数据进行一次哈希处理,并对哈希进行签名。哈希是与数据绑定的一串值,篡改信息会造成哈希值发生变化,因此本身具有防篡改的特性。接下来是对信息的哈希值进行签名。签名是一种非对称加密的方法,可以在不泄露发送者本身的私钥的情况下,通过公钥和签名信息确认发送者持有对应的私钥。对哈希进行签名还可将发送者的身份和信息绑定,同时也可防止其他人冒充发送者,因此这样处理可保证信息的防篡改的同时认证发送者的身份,防止抵赖。

业务上链前的处理阶段主要是通过工具将业务数据转换成区块链可读的方式,同时通过签名将发送者的身份和发送信息绑定,起到身份认证和防止抵赖的作用,最后再将处理好的信息发送到区块链节点。上链前处理是中心化的,这些处理过程并不涉及区块链节点,因此这一阶段并不需要节点参与。有些系统,如边缘计算系统,本身的性能和储存空间都有限,并不适合做区块链节点,但可以作为业务上链前处理的平台。

二.上链处理阶段

处理完成的数据发送到区块链节点后,就形成了一笔区块链交易并进入上链处理的阶段,链上处理大体可分为交易广播和区块共识流程。

交易广播

在收到交易后,各节点会将接收到的交易先广播到其他节点,以便形成一个统一的交易池来为达成共识做准备。交易广播后联盟链和公链对交易会有不同的处理方法。

对公链来说,任何交易发送者都可将交易发送到链上,但是处理能力不是无限的,因此会根据交易的手续费行有选择的处理,手续费低的交易很可能一直无法得到处理。在一些极端情况下,节点为了提高处理速度甚至会出现不处理任何交易的空块。对联盟链来说有一定的准入机制,能够发送交易的应该是合作伙伴,因此处理交易的原则是尽量将能够处理的交易打包进块。

区块共识

区块主要包含区块哈希、区块头和交易数据的信息,其中区块头一般都会包含共识信息、时间戳、区块高度等,并记录前一区块的哈希来指向前一区块;交易数据包含该区块里打包交易的哈希,交易需要根据统一的顺序排序;在确认区块头和哈希之后,就能计算区块哈希。这样通过前一区块哈希和自身哈希相连形成链条,修改链上的任何一个区块的内容会后面区块的前一区块哈希和修改后的哈希不同,因此区块具有防篡改的特性。只有修改该区块和往后所有区块的内容,且每个节点上都以相同方式修改才能完成修改。

共识的主要目的就是以某种约定的方式生成能够被大部分节点认可的区块。不同共识方式的区别比较大,但是基本原则就是让不同节点产生相同的区块,尽可能保证数据的一致性。

对公链来说,因为节点的通讯状况不可控,保证一直出块的情况下,如果网络出现问题,将可能无法达成一致,甚至出现分叉的情况。对联盟链来说,共识算法需要尽量使节点的区块数据保持一致性,因此在一定数量的节点出现网络问题的情况下将会停止出块。

上链处理阶段是将业务数据写入区块的过程,这个过程就是通常所说的上链,这一过程是去中心化的,需要由节点处理。在处理阶段时业务数据还是可以按照发送者的意愿写入不同内容,而进入上链阶段后的业务数据将无法篡改,不过仍然存在上链失败的可能,因此仍需要关注是否完成上链。共识阶段完成后,各节点的区块保持一致。此时的业务数据获得每个节点承认且可追溯的数据了。

三.智能合约处理阶段

上链处理完成后,业务数据已经记录在链上了,对于单纯存证的业务来说,将业务信息写入区块已经完成了这笔业务处理,只需记录存证业务的交易哈希并在取的时候通过交易哈希查询即可。但是大部分业务场景都需要进行一定的逻辑处理,因此通过智能合约处理是必须的。智能合约处理包括合约逻辑处理以及修改状态梅克尔树等流程。

合约逻辑处理

完成上链的业务数据很多情况下需要进一步进行逻辑的处理,比如一次最简单的商品的交易就涉及转账,即买家余额减少和卖家余额增加的逻辑流程,这样的流程虽然可以通过上链前的处理来完成,但是上链前处理是中心化的流程,对网络波动和可信度问题都有一定的劣势,因此通过智能合约进行逻辑处理是比较好的方式。

不同链平台对智能合约处理的方式不同,但是和一般的编程语言一样都有调用函数和传入参数的过程。并且因为创建智能合约和调用智能合约的过程都是上链的,即执行的程序和调用的函数与参数都是经过共识的,因此最终调用智能合约的数据的输出结果也是相同的。处理完后的结果会写入合约的状态数据库,这个数据库除了最新状态也会包含历史状态,方便追溯和查询。

修改状态梅克尔树

智能合约的逻辑处理完成后,会修改状态梅克尔树。梅克尔树是一个二叉树结构,不同的叶通过梅克尔树链接到根,能起到防篡改和索引的作用。通过梅克尔树的索引,能够快速定位合约的历史状态,可通过查询某个业务执行的区块高度的合约数据来获取当时的执行结果。

智能合约处理阶段是将业务数据进行逻辑处理,并记录智能合约状态的过程,这一过程也需要节点处理。如果合约逻辑处理的操作执行失败,对状态梅克尔树的修改也会撤销,合约的数据将会回滚到调用前的历史数据。需要注意的是合约调用失败和上链失败是有区别的,触发合约调用的时候交易已经在区块里留下记录,而区块是防篡改的,因此调用失败并不会擦除区块里的记录。如果交易因为数据错误或者共识问题而没有被记录进区块,则不会触发合约处理的过程。

敲黑板啦~划重点啦~

近日有小鲨鱼咨询关于“estar电子竞技俱乐部”直播间鱼吧的互动活动获得的礼品如何填写收货信息问题,小鲨鱼们可以看下这里哦https://t.cn/A6A3Klk7。

之前私信“鱼吧”填写收货信息的方式已做更改~获得相关礼品的小鲨鱼们请于5月20日10点之前私信官方微博【eStarPro】这个账号,按照【活动】+【互动ID】+【联系方式】+【收货地址】+【礼品】的格式私信发给官微eStarPro这个微博账号~小助手这里展示的鱼吧链接中也有告知哦~没有将以上信息私信给该微博的小鲨鱼们将视为放弃礼品哦~小助手也建议已给“鱼吧”私信收货信息的宝宝们重新将收货信息私信eStarPro官微进行登记呢~

#裴子添[超话]#|#裴子添全世界都不如你#
【Q&A活动】采访

积分规则:答对一道题计1分~
参赛要求:关注@裴子添 @裴子添后援会
后援会邮箱:1192372951@qq.com

【邮件格式】
邮件主题:【Q&A活动】+采访+微博ID
邮件正文:按照题目的顺序,标明序号依次回答问题

【注意事项】
1.若答案未按顺序、未标明题目序号作答,邮件作废
2.若邮件主题与要求不符,邮件作废
3.8点45分停止接收邮件,过期无效
4.本次活动解释权归裴子添后援会所有

⭐️累计积分第1名并且符合参赛要求的小甜甜可get签名照一张+周边一份~(邮费自付)

ps:【失恋疗养院】问题于4月25日发布


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • AI公司商汤即将上市,就被击中了重拳。一,美国将商汤列入了制裁黑名单,不允许美国投资者投资商汤。这对商汤会有一定的影响。毕竟作为上市公司,一是无法吸引美国资本,
  • 很久很久以前的一个故事 有些日子了,那个男孩一直徘徊在沙滩上,他想找一块属于自己的石头。   周围来来往往的人,都是带着和他同样的目的,来这片沙滩寻找自己
  • 【日本玩家不买账:#索尼PS5本土销量创下历史最差#】来自ACE研究所分析师HidekiYasuda的最新报告中,首销前六周,PS5在日本仅卖[同意]出了24万
  • 【“双碳”目标下我国氢能产业发展路线研判】“双碳”目标出台后,我国氢能产业步入快速发展阶段。预计当前至2030年是我国氢 能产业发展的奠基期,这一时期氢气将经历
  • 《贤愚因缘经 卷一》(北魏沙门慧觉译、新译圆照法师) 梵天请法六事品第一(4) 又复世尊。过去久远无量阿僧祇劫。此阎浮提有大国王。名曰梵天王。有太子。
  • 姜精油 英文名:Ginger Fresh 拉丁文名:Zingiber officinale 萃取部位:根 萃取方式:蒸馏 姜在中国的饮食文化中,具有重要的地位,
  • 有哪些‘憨憨’文案可以让我稳居朋友圈沙雕C位?[心] 1、之前有个朋友找我借钱去整 容,整的挺成功的,我再也认不出是谁借了我的钱。 2、大家好我是月老,想拥
  • #言情小说[超话]# 《星光下,热吻你》作者:庄敬紫 文案1:   许慕时出身豪门,是许氏集团总裁,财力雄厚,矜贵自恃,传闻不近女色。   直到有一天
  • #OBAX配车变动# 【近两日配车变动合集[喵喵]】 昨日: 1、快2路2台XMQ6180G:闽DZ3265、闽DZ3765支援快3路。 2、快1路3台XM
  • #阿迦罗泰文化佛堂# 舍.看起来是给人.实际上是给自已。 舍和得的关系,就如因和果! 因果是相关的,舍与得也是正动的! 能够舍的人,一定是拥有富者的心胸如果他
  • ⏰2.28 pm8:00 new! 评➕ 助力3个宝宝 100元券券!! [心]全世界都在盼望你长大 只有miu想要守护你的天真无邪[心] ✨温柔的千金小姐
  • #石家庄身边事# 张腾飞今年21岁,家在正定,是石家庄信息工程职业学院市场营销专业的学生,已经在湖南省永州市宁远县太平镇下坠完全小学支教十余天。这几天,可把这个
  • 《山河万里,我来见你》 林竞×齐玥 ☁ “这次换我守着你。” “请你不要放弃我。” ☁ 吾愿化身利刃,护你一世周全。 ☁ “活着的人,应当背负着他们的意志前
  • #向哥的一罐糖菁[超话]# 兰陵觉得现在瓦舍的戏都太简单了,要想上一个level增加竞争力,必须搞出那些别人都唱不来的戏。但戏越难,伴奏也难,目前满打满算就
  • 张静初:演技堪比国际章,却惨遭京圈太太抵制,她为何沦落至此? 前脚与陶虹一起宣传吃素,后脚就被曝出曾与朋友涮羊肉,双标使的炉火纯青,遇事不慌不忙,即便遭到全网群
  • 因为想要感受痛苦,所以再次回顾。。,能把活下去搞得跟诅咒一样的也只有你了吧 不追求肉体疼痛的原因是真的下不去手,给伤口涂酒精是我唯一能做的了,其他达咩 看。。。
  • #陈哲远[超话]# 最近二刷了一部超级超级超级好嗑的剧《暗格里的秘密》真的深陷四月CP出不来了啊[色]丁羡与周斯越的爱情也太令人羡慕啦!而且这部剧把生活的细节到
  • #创造营2021[超话]# #创造营# 【刘宇米卡】“歌”与“舞”Battle结束 刘宇—121w 米卡—40w 恭喜️。这场 battle无论是对于两位选手
  • 什么脸型,什么命! 火形人。脸形多角、身材多清瘦或少余肉、脸色不白不青近于红赤。羊年火势由旺变温、却方兴未艾。火型人于马年旺火同旺、旺者登峰造极、成果非凡。衰者
  • 【春运期间 衡水车务段发送旅客39.9万余人次】为期40天的春节运输于2月25日落下帷幕。从衡水车务段获悉,春运期间该段共计发送旅客39.9万余人次,其中4个高