公共区块链通过提供数据的透明度、完整性、可追溯性和真实性来协调信任层。它可以记录所有交易活动。这些独特的属性吸引了许多企业开发应用程序来记录利益相关者之间的透明活动、提供来源可追溯性的所有权详细信息、证明数字内容存在的时间戳等等。AionFoundation首席执行官MattSpoke强调了为什么公共区块链是一条很好的前进道路。尽管区块链存储是开放和可访问的,但在此状态下执行的每个写入操作都会产生成本。因此,必须将大部分应用程序托管在区块链上以最大限度地降低成本。应用程序的其余部分需要构建以解决以下问题:两个关键问题1.哪些数据需要存储在区块链中?公共区块链上的任何数据都是公开的、可访问的和不可撤销的。因此,除非使用抗量子算法对数据进行编码和存储,否则公共区块链不符合GDPR(以及CCPA)法规的要求。个人身份信息(PII)或损害用户隐私的敏感数据不应存储在区块链上。但是,区块链仍然需要账户地址单独链接到真实用户(在区块链上可以是伪匿名的)。2.在哪个区块链上构建应用程序?软件的性能直接取决于其依赖项及其宿主环境的性能。区块链带来了一种去中心化架构的新模式,其中链上的每个节点都不断更新以保持状态。除此之外,区块链应用程序还需要处理各种问题及其实施。共识区块链依赖于参与者节点的分布式共识。与任何权益证明(PoS)系统相比,工作量证明(PoW)共识需要更多时间才能就最终确定的基于水印的系统达成共识。同样,共识算法的其他变体会影响交易确认时间,应用程序需要在不牺牲响应时间的情况下处理这些时间。公链智能合约的智能合约方式是开放的,无论什么样的用户都可以调用。因此,智能合约需要确保其数据不被破坏并防止滥用其业务逻辑。开发安全高效的智能合约需要高超的技巧,需要大量的实践。此外,基于此类智能合约的复杂性和监控影响,它需要与外部组织进行安全审计。区块生成时间和交易数量区块生成时间和最大可合并为一个区块的交易数量决定了系统的吞吐量。该应用程序理论上可以生成许多交易,但这些交易仍需要与区块链上的其他应用程序一起完成。例如,以太坊目前每秒处理15笔交易。访问区块链尽管区块链是开放和可消费的,但需要可靠的连接才能使用完整节点或第三方(例如Infura、Blockdaemon、Nodesmith等)等选项与其通信。全节点保证最新的区块链状态。但是,它很难管理(尤其是在维护和升级方面)并且不符合成本效益。如果企业选择第三方服务,它会引入额外的依赖项,这些依赖项的内部工作是将交易交付到区块链、交易池管理、重试策略和重置策略。Gas成本和价格以电网为例,与在区块链上执行交易相关的Gas价格根据电网的需求和供应而波动。底层网格加密货币价格也会对其产生影响。根据应用程序的使用模式,明智的做法是估算未来三到五年运行系统的天然气成本,在价格较低时提前购买天然气将有助于降低成本。工具与支持最后但同样重要的是对区块链生态系统的工具支持,因为它在开发、部署、调试和监控智能合约时起着至关重要的作用。在您需要时获得技术支持有很多不同的工具。处理区块链的复杂性墨菲定律在理想世界中行不通,但在现实中会出现问题,人们需要为最坏的情况做好计划。其中一些问题是可以解决的,但应用程序仍然需要应对区块链复杂性的挑战。区块链无法处理的交易今天的许多应用程序都会产生大量的微交易来记录每一个细节。区块链尚未达到这种可扩展性水平,但是,它不应该阻止人们在其上构建应用程序。这可以通过聚合交易(如果逻辑上可行)和减少区块链上的交易提交来解决。高吞吐量的另一种选择是使用侧链网络(如果可用),这可确保公共区块链收益仍可用于应用程序,同时将一些工作卸载到侧链。未能实施交易区块链可能无法获取应用程序提交的交易。这可能是交易本身的问题,也可能与分散的网络问题有关(例如,区块链中的链重组、硬分叉、交易池故障等)。该应用程序将在所有情况下通过记住提交给区块链但失败的内容来重试。如果交易因较低的gas价格而失败,应用程序将以较高的gas价格重新提交交易。否则,它将重试。这对于将区块链状态与应用程序的内部状态同步至关重要。电网拥塞应用程序应该有响应和适应电网拥塞的规定。如果提高gas价格不起作用,应用程序应定期或按指数方式重试。采用区块链解决网格拥塞的好处是交易可能不会立即通过其他方式提交到网格。这将降低双重消费的风险。该应用程序可以使用其内部状态继续运行,并在以后以更高的可用gas价格提交交易。区块链和内部应用程序状态之间的不一致如果应用程序是围绕区块链令牌化技术构建的,应用程序的非区块链部分将记住尚未确认或提交给区块链的系统状态。当用户访问应用程序时,可以考虑这些未决事务。但是,如果他们直接访问区块链浏览器,则余额或状态可能会关闭。如果用户很聪明并且可以访问他们的私钥,他们可以将交易直接发送到应用程序外部的区块链并耗尽余额或更改状态。解决该问题的一种方法是在应用程序中实现余额透支保护,当交易余额达到一定水平时允许交易执行。第二种方法是为应用程序创建内部帐户以代表用户执行状态更改。总而言之,构建具有数百万用户和大量交易的企业区块链应用程序可能不适合传统的软件架构。因此,架构师需要为新的挑战和未解决的问题做好准备,以解决此类大规模应用问题。这里没有涉及的一个重要方面是管理用于在区块链上执行交易的密钥。
