热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于存储的共识范式

原文链接:https://mirror.xyz/0xDc19464589c1cfdD10AEdcC1d09336622b282652/KCYNKCIhFvTZ1DmD7IpXr3p

原文链接:

https://mirror.xyz/0xDc19464589c1cfdD10AEdcC1d09336622b282652/KCYNKCIhFvTZ1DmD7IpXr3p8di31ecC283HgMDqasmU

译者:Evelyn|W3.Hitchhiker

基于存储的共识范式(缩写为SCP,原名:基于存储的计算范式)是everFinance提出的下一代区块链应用开发范式。SCP是一种开发实践,任何人都可以用它来构建去中心化的应用程序。一个典型的应用是everpay.io,还有其他应用,比如koii.network、kyve.network本质上也都是SCP的一个实现。虽然SCP的理念源于SmartWeave,但SmartWeave也可以被认为是SCP的一个实现。

什么是SCP?

在以太坊的模型中,计算是由所有全节点执行的,然后生成并存储全局状态以供查询。与之不同的是,SCP设法将计算与存储分开。更具体地说,区块链只是用于数据存储,而链外客户端(clients)/服务器(serves)负责执行所有计算并存储生成的所有状态。

SCP使用链外智能合约,可以用任何编程语言来进行编写,所有输入都来自基于存储的区块链。在这种范式下,区块链很像一个硬盘,链外智能合约可以在任何具有计算能力的设备上运行。将区块链作为硬盘,可以确保存储的数据具有不变性和可追溯性,从而保证数据的可信度。因此,链外智能合约可以通过对可信任的数据进行计算来确保状态的最终一致性。

建立在SCP之上的应用程序既具有区块链的透明度和可信度,又具有传统互联网应用程序的高性能和可用性。SCP具有以下优势:

可组合性(Composability):传统金融服务之间的业务操作需要查账,这很复杂,也很容易出错。使用SCP可以将所有的金融交易记录纳入区块链,从而将传统的金融服务转换为区块链应用。这不仅有利于自动查账,也有利于快速协调和高效组合各种应用。

低开发障碍(Low Development Barriers):智能合约需要使用EVM在Solidity中编写,而链外计算程序可以用任何编程语言编写。这使得开发人员可以将传统的应用程序转换为区块链应用程序。

没有性能限制(No Performance):链外计算提供了类似于传统应用的卓越性能,因为链外服务器可以处理大量交易。这样一来,TPS仅仅取决于服务器的机器性能和应用程序的技术架构。

低共识成本(Low Consensus Cost):处理一百万笔交易只需花费1美元。

在实践中改进SmartWeave

SCP是由Arweave的智能合约SmartWeave和Ethereum的L2扩展方案Rollup的启发而设计的,这提高了它们的可用性。

SmartWeave是一个建立在Arweave网络之上的智能合约平台。它允许用户和开发者建立程序,其执行是可信任的和去中心化的。SmartWeave的独特功能之一是懒惰评估过程(the process of lazy evaluation,),它将处理智能合约的负担从节点上移开,并将其转移到用户身上。这意味着,不是在网络中的每台机器上运行每一段代码,而是请求它们在机器上的本地来计算合同状态。

SmartWeave是一个去中心化的合约平台,对所有人开放。SmartWeave启用的链外计算提供了更高的可扩展性,但代价是引入了一个新问题。这个问题在于,SmartWeave容易受到DDoS攻击,这意味着大量的无效数据通过Arweave传输到所有的计算节点,导致共识的延迟和不可用。当DDoS攻击者恶意向区块链发送大量虚假交易时,节点客户不得不在验证前下载这些交易,因此占用了很大一部分带宽。在这种情况下,有效交易被淹没在虚假交易的洪流中,降低了数据的准确率。在某种程度上,DDoS攻击甚至可能导致客户端状态计算的延迟。

为了防止DDoS攻击,确保应用程序的可用性,everFinance引入了一个协调器,首次计算和验证应用程序的所有数据,然后将成批的数据纳入链中。协调器的作用就像建立在以太坊之上的卷轴,将交易分批打包,然后将其纳入链中。所有打包的数据都可以被验证,SmartWeave的 “懒人评估 (lazy evaluation)”确保了可验证性,Rollups保证了数据的准确性,有助于避免DDoS攻击。

Reference


  • SmartWeave: Arweave smart contracts

  • A Storage-based Computation Paradigm Enabled by Arweave

  • A Speech on IPFSNEWS’s Blockchain Forum: A Storage Application Paradigm

  • AMA recap with Chris by SnapFingers about Arweave, storage and more

  • Evolution of the Blockchain Application Model along with Changing Consensus



推荐阅读
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 四月份NFT优质榜单
    四月份NFT优质榜单 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 引号快捷键_首选项和设置——自定义快捷键
    3.3自定义快捷键(CustomizingHotkeys)ChemDraw快捷键由一个XML文件定义,我们可以根据自己的需要, ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Swarm挖矿项目的发行机构有哪些组成?如何看待BZZ币未来的价值?相关的知识,希望对你有一定的参考价值。据小编了解,S ... [详细]
author-avatar
Aqingking_577
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有