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

哆哆区块链 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 举报 写留言 🖊   
✋热门推荐
  • ”花开花落是花的宿命,也是大自然的轮回。接受人生的考验是人的宿命,也是成长的代价。
  • 朋友边走边拍,她们最近迷上了抖音,一个多小时的散步有一个小时都在拍拍拍[嘻嘻]其实是很美很幽静的一个公园,在城市的最北边,儿子的学校就在它南边,不远处灯火通明的
  • 作为一名“海河英才”新天津人,在新技术、新工艺上下大功夫,持之以恒解决重点领域卡脖子难题,既是身肩的责任,也是人生价值实现的载体。天津渤海化工集团有限责任公司党
  • 而在福寿园,鲜花祭祀被当做一种新的祭祀风尚来大力弘扬,当你打电话到陵园去预约时,工作人员会提醒你园区实行无烟祭扫,请不要携带烧纸和供香等,园区会为客户准备鲜花。
  • #oner[超话]#已开勿转感谢团控的大家给我点赞,可能还有不在团控的小伙伴给我点赞,非常感谢大家。大家转评说对四子的祝福就行首先把事儿讲清楚(写在前面)这里随
  • 因为他们变的不再从容自信,放弃了人类与生俱来的禀赋:友好与真诚,于是他们变的自私和冷酷,不再关注别人,人人都戴上了假面具,把得失看的太重要,把他们同类看的太丑陋
  • 袁兴亮介绍,各地的桔橙在当年秋冬就成熟上市了,而丹棱“不知火”桔橙要晚至第二年3月才成熟上市,能实现错季销售,且冬季有助于果实“退酸”口感更甜。而冬虫夏草,只是
  • lý thuyết nếu có 1 miếng thịt thật tođừng yên tâm giấu nó ở 1 nơi vô cùng an toà
  • 7,劫财坐伤官喜用论:劫财与伤官同柱是不吉之配置,因劫财会生伤官,更加重伤官之特性,这种配置者,每都目无法纪,违规越法,身败名裂,女命有妨夫败夫之虞,男命现于时
  • ♥︎每周可免费领一盒♥︎ ┗┈┈┈┈┈┈┈┈┛劲爆好消息品牌爆款水果面膜终身0元免费领取!一辈子的面膜❗️精选速购承包了❗️ 云店每周无条件免费领取一盒面膜✅创
  • 男子猜测是沙发主人放进去后忘了,他表示“不是咱的东西,咱不能要,”并希望通过当地媒体找到物品主人。对此有网友评论说你就收了吧,沙发主人不缺这些钱,真缺的话他也不
  • #小王子#是一本成年人才能读懂的故事,只有经历过,才能感受到为何他总是越来越难过。如此我們才能活得乾淨、自在,幾乎接近幸福如此我們才敢面對那些美好的事物,說:
  • 我的老男孩 我亲爱的老公我女儿的爸爸我的好兄弟/好队友 生日快乐呀[蛋糕]恭喜你 成功进入新的年龄阶段~三十而立 在你身边 你在身边三十而已 人生刚刚开始愿平安
  • 不想跑步,但可以练腿,这个也是心率杠杠的但什么时候蝴蝶袖能消下去真烦刚才又跟妈妈视频一说就是半小时朋友回去了我妈还在说妈妈每次都说一定要好好说英语我真不懂妈妈为
  • 慢慢的发展成为了四肢无力,这不得不重视了,可是去了医院做了相关的检查也并未确诊运动神经元病,只是被当成了重症肌无力,按照“重症肌无力”治疗了一年多并未见到改善,
  • 在某些时刻想起来的一点事情,才发现我跟他是多么的不合适。我以后不想跟他受苦,他确实养我这种人很费劲,而且还有一些其他的事情,所以放手就好!
  • 覆盖面积小(一般在一至五公里)这就是有时候太阳已经高照,高速公路还要因雾封闭的原因,即部分路段“团雾”还未消散;“团雾”外视线良好,团雾内四顾朦胧;【图片1】(
  • #詹姆斯##NBA吐槽大会##NBA#【詹姆斯两季全勤+场均得分18.4分,将成为历史得分王】湖人新赛季首战将在10月20日进行,对手是勇士队。假如詹姆斯接下来
  • 《中国报业》国家级,知网收录,明年初见刊,最快3天录用 影响因子:0.224收稿方向:业界研讨,媒介新论,经管论坛,地市在线,学园探究,传媒阅评,产业探微,项目
  • #华晨宇[超话]##华晨宇927出道九周年# “我的旗帜列成一队,相互没有纠缠,我的歌声列成一队。”带话题#华晨宇927出道九周年# 车专+讠平揪一位如图流沙麻