公共区块链通过提供数据的透明度、完整性、可追踪性、真实性来协调信任层。它可以记录所有交易活动。这些独特的属性吸引了许多企业来开发应用程序,这些应用程序记录利益相关者之间的透明活动、提供来源可追溯性的所有权详细信息、证明存在的数字内容的时间戳等等。Aion基金会首席执行官Matt Spoke强调了公共区块链是一条很好的前进道路的原因。

尽管区块链存储是开放和可访问的,但在这种状态下执行的每一个写操作都会产生成本。因此,必须将应用程序的主要部分托管在区块链上,以最大程度地降低成本。需要构建应用程序的其余部分来解决以下问题:

两个关键问题

  1. 需要在区块链中存储哪些数据?

公共区块链上的任何数据都是开放的、访问的且不可撤销的。因此,除非数据已使用抗量子算法编码并存储,否则公共区块链不符合GDPR(以及CCPA)法规的标准。

个人身份信息(PII)或危及用户隐私的敏感数据不应存储在区块链上。但是,区块链仍然需要账户地址才能将其与真实用户单独链接(在区块链上可以是伪匿名的)。

  1. 在哪个区块链上构建应用程序?

软件的性能直接取决于其依赖项及其主机环境的性能。区块链带来了一种去中心化架构的新模式,其中链上的每个节点不断更新以维护状态。除此之外,区块链应用程序还需要处理各种问题及其实现。

共识

区块链依赖于参与者节点的分布式共识。与任何权益证明(PoS)系统相比,工作量证明(PoW)共识需要花费更多时间才能在基于最终水印的系统上达成共识。同样,其他变体共识算法也会影响交易确认时间,应用程序需要在不牺牲响应时间的情况下进行处理。

智能合约

公共区块链智能合约方法是开放的,无论什么样的用户都可以调用。因此,智能合约需要确保其数据不被破坏,并防止滥用其业务逻辑。开发安全有效的智能合约需要高超的技能,并需要大量的实践。此外,基于这种智能合约的复杂性和监控影响,它需要与外部组织进行安全审核。

区块产生时间和交易数量

区块的产生时间和可以合并到一个区块中的最大交易数决定了系统的吞吐量。该应用程序理论上可以生成许多交易,但是这些交易仍需要与区块链上的其他应用程序一起完成。例如,以太坊当前每秒处理15个交易。

访问区块链

尽管区块链是开放和可消耗的,但需要可靠的连接才能使用完整的节点或第三方等选项(例如Infura、Blockdaemon、Nodesmith等)与其通信。完整节点保证最新的区块链状态。然而,它很难管理(特别是在维护和升级方面),而且不具有成本效益。

如果企业选择第三方服务,它将引入额外的依赖性,其内部工作原理是将交易交付到区块链、交易池管理、重试策略和重置策略。

天然气成本和价格

以电网为例,与区块链上执行交易相关的天然气价格根据电网的需求和供应而波动。基础电网加密货币价格也会对其产生影响。根据应用程序的使用模式,明智的做法是估算未来三到五年内运行该系统的天然气成本预算,而在价格较低时提前购买天然气将有助于降低成本。

工具与支持

最后但并非最不重要的一点是对区块链生态系统的工具支持,因为它在开发、部署、调试和监视智能合约时起着至关重要的作用。在需要时获得技术支持会带来很多不同工具。

处理区块链的复杂性

墨菲定律在理想世界中是无效的,但实际上出了问题,人们需要为可能出现的最坏情况制定计划。其中一些问题是可以解决的,但是应用程序仍然需要处理来自区块链复杂性的挑战。

区块链无法处理的交易

如今,许多应用程序都会产生大量的微交易,以记录每一个小细节。区块链尚未达到这一级别的可扩展性,但是,它不应阻止人们在其之上构建应用程序。这可以通过汇总交易(如果逻辑上可行)并减少区块链上的交易提交来解决。

高吞吐量的另一种选择是使用侧链网络(如果可用),这样可确保将公共区块链收益仍可用于应用程序,同时将部分工作卸载到侧链。

未能实施交易

区块链可能无法提取应用程序提交的交易。这可能是交易本身的问题,也可能与分散网络问题有关(例如,区块链中链的重组、硬分叉、交易池故障等)。该应用程序将在所有情况下通过记住已提交给区块链但未通过的内容来重试。

如果交易失败是由于较低的天然气价格引起的,则应用程序将以较高的天然气价格重新提交交易。否则,它将重试。这对于同步区块链的状态和应用程序的内部状态至关重要。

电网拥塞

应用程序应该具有响应和适应电网拥塞的规定。如果提高天然气价格不起作用,则该应用程序应定期或按指数重试。

电网拥塞采用区块链的好处是,可能无法立即通过其他方式将交易提交到电网。这将减少重复消费的风险。该应用程序可以使用其内部状态继续运行,并在以后以较高的可用天然气价格提交交易。

区块链与内部应用程序状态之间的不一致

如果应用程序是围绕区块链标记技术构建的,则应用程序的非区块链部分将记住尚未确认或提交给区块链的系统状态。

当用户访问应用程序时,可以考虑这些未决的交易。但是,如果他们直接访问区块链浏览器,则余额或状态可能会关闭。如果用户很聪明并且可以访问其私钥,那么他们可以将交易直接发送到应用程序外部的区块链,并耗尽余额或更改状态。

解决此问题的一种方法是在应用程序中实现余额的透支保护,并在交易余额达到一定程度时允许执行交易。第二种方法是为应用程序创建内部账户,以代表用户执行状态更改。

总而言之,构建具有数百万个用户和大量交易的企业区块链应用程序可能不适合常规软件体系结构。因此,架构师需要为新的挑战和未解决的问题做好准备,以解决这种大规模应用问题。

此处未涵盖的重要方面是管理用于在区块链上执行交易的密钥。

最后,小编分类整理了许多java进阶学习材料和BAT面试给热爱IT行业的你,如果需要资料的请转发此文章后再私聊小编回复【java】就能领取2019年java进阶学习资料和BAT面试题以及《Effective Java》(第3版)电子版书籍。也可以加群:712263501领取海量学习资料进行学习。

企业区块链应用程序的两个关键问题相关推荐

  1. 未能初始化appscan应用程序现在将关闭_企业区块链应用程序的两个关键问题

    点击上方"蓝色字体",选择 "设为星标" 关键讯息,D1时间送达! 很多架构师在使用区块链技术之前需要考虑一些关键问题,而这些问题与数据隐私和区块链类型有关. ...

  2. 百度天链平台:企业区块链技术赋能产业创新落地

    11月21日,百度智能云携手麦思博,特邀浦发银行.英特尔.宇信科技.火币网等行业专家,现场分享区块链在发展趋势.产业落地.产品与技术等方向的思考,并就区块链热点现象进行了观点碰撞. 其中,百度智能云区 ...

  3. 阿里云国际版服务器如何搭建区块链应用程序

    什么是区块链? 区块链是网络上计算机之间的共享数据库,可确保所有参与者验证所有执行的交易. 区块链网络的参与者维护数据库的副本,使信息透明,并且在任何给定时间对网络上的每个人都可用. 区块链技术众所周 ...

  4. 使用 Python 从零开始开发区块链应用程序

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. "区块链"是什么? 区块链是一种存储数字数据的方式.数据可以是任何内容.对于比特币,它是事务(在帐户 ...

  5. 比特币寒冬中,你更应该关注企业区块链!

    公众对区块链的认识也许限于比特币或以太坊,但很多却不知道 Hyperledger(超级账本).Hyperledger Fabric,是由 IBM 带头发起的一个联盟链项目,2015 年末移交给 Lin ...

  6. 企业区块链在2018年已经就绪

    Mark Rakhmilevich是Oracle公司区块链产品管理的高级总监.他致力于Oracle区块链云服务,并指导企业.isv和SIs构建区块链应用程序,并将企业系统集成到这个平台上. 与企业区块 ...

  7. 走进区块链(一):用Python实现第一个区块链小程序

    源代码链接:https://github.com/dvf/blockchain 大家好!这是本人踩在巨人的肩膀上,实现的第一个区块链小程序.在实现代码的过程中,我遇到了很多问题,不过,幸好都解决了.在 ...

  8. 企业区块链应用的几个基本原则

    荷月科技在过去几年一直致力于运用区块链技术服务企业.服务商业场景,在区块链技术发展的初期,我们就进行很多领域的尝试,随着技术的积累和经验的丰富,更是沉淀了一些区块链技术在商业应用上的想法与实践经验. ...

  9. 如何开发一个区块链应用程序

    区块链是一项巧妙的发明,有望使数字世界更加安全和分散.通过允许数字信息的分发而不是复制,区块链技术创建了一种新型互联网.最初是为数字货币比特币而设计的,现在科技界正在寻找该技术的其他潜在用途.在不久的 ...

最新文章

  1. 迷茫的未来,我们需要做些什么呢?
  2. python中用来占位的语句是_python占位语句
  3. Merge Two Sorted Lists
  4. Qt中的QMap和QHash
  5. Thymeleaf语法规则
  6. java hive查询_java程序调用hive查询的一个异常
  7. 北海焊接机器人_东方自动焊接专机价格优惠
  8. mysql update 并发 慢_详解Mysql的锁机制
  9. js模块化开发——模块的写法
  10. u3d_shader_surface_shader_2
  11. 实验吧——Recursive
  12. mapbox绘制航线图
  13. 【亲测可行】Autodesk 卸载工具,一键完全彻底卸载删除autodesk软件专门卸载工具...
  14. AppEmit是应用程序(尤其是浏览器)与本地程序间互相通信的易扩展的轻量级中间件
  15. mysql中查询一个商品价格最大的商品名称的sql出错记录
  16. 假如用VIVO手机拍照,这几个功能一定要打开,效果媲美单反
  17. 实现HTML转PDF 多个PDF合并
  18. 基于信息融合的供应链合作伙伴选择刍议 (zt)
  19. 字符区位码 java_用Java取得汉字的区位码
  20. 信捷 plc c语言 pdf,信捷plc学习笔记复习过程.pdf

热门文章

  1. php7安装redis6扩展
  2. [JavaScript] 函数作用域问题
  3. oracle 开链,欧链OracleChain开启Dapps应用新时代
  4. MySQL下载与安装教程以及环境变量配置
  5. python 判断字符串是否为空,字典是否为空,列表是否为空,元组是否为空的方法
  6. Android AlertDialog设置宽度显示不正常的问题
  7. 洛谷 P5057 [CQOI2006]简单题(树状数组)
  8. Speed4Web 绿色纯净版
  9. 2022-2028年中国中小企业电子商务市场投资分析及前景预测报告
  10. redis sentinel集群配置及haproxy配置