everPay[1] 是 everFinance 旗下的区块链实时金融协议。everPay 会将其他公链上的加密资产锁定在智能合约中,并将其映射到协议中为用户提供实时的支付结算。everPay 交易成本非常低,1美金可以进行百万笔交易。此外,everPay 使用存储共识范式打造,没有区块链的性能限制问题,协议的 TPS 大小取决于应用架构和服务器性能,具备和传统互联网应用媲美的 TPS 性能。
在传统法币领域有 stripe[2] 提供法币支付服务,区块链领域则可以使用 everPay 进行代币支付。everPay 协议具备区块链的重要特性:透明、不可篡改、去信任化等。在协议中,任何人都可以成为协议的检测者,观察系统中的账本变化。同时,我们也为 everPay 提供浏览器,任何用户都可以访问浏览器查看 everPay 的账本,并确保 everPay 中锁定代币资产和流通资产始终保持 1:1 的映射关系。
存储共识范式(Storage-based Consensus Paradigm[3][4],简称 SCP)是 everFinance 提出的下一代区块链应用开发范式。在 Ethereum 模型中,计算会被区块链网络中的所有节点执行,所有节点都会生成和存储全局状态以供查询。不同于 Ethereum 模型,SCP 分离了计算和存储,区块链不进行任何计算仅进行数据存储,所有计算由链下的客户端/服务器执行,生成的状态也由链下客户端/服务器进行保存。
SCP 使用了链下智能合约,智能合约可以使用任何的语言进行编写,这些程序的所有输入参数都来自存储型区块链。在范式中,区块链更像是计算机的硬盘,链下智能合约可以在任何具备计算能力的机器上进行。使用区块链作为硬盘,所存储的数据具备了不可篡改和可追溯的特性,区块链为数据赋予了可信的特性。此时,链下智能合约对可信数据进行计算,能保证状态的最终一致性。
使用 SCP 开发的应用程序具备区块链的透明和可信特性,同时又具备传统互联网应用的高性能和可用性。SCP 具备以下优势:
SCP 的灵感来自于 Arweave 的智能合约 SmartWeave 以及 Ethereum 二层扩容方案 Rollup,对 SmartWeave 和 Rollup 的可用性进行了改良。
SmartWeave 是建立在 Arweave 上的智能合约平台。让用户和开发者可以构建应用程序,程序的执行具备可信和去中心化特性。SmartWeave 的重要特性是“惰性计算”,它将智能合约的计算过程从节点中移除,转交给用户进行处理。这意味着,合约代码的计算过程不会在区块链网络中进行,所有的计算过程和状态都在请求它们的机器上进行本地计算和存储。
SmartWeave[5] 是一个完全开放性、去中心化的合约平台,链下计算具备更强的扩展性但也引发了新的问题。SmartWeave 容易受到数据 DDOS,大量无效数据通过 Arweave 传输到所有的计算节点上,导致节点的共识延迟和不可用。进行数据 DDOS 攻击时,攻击者可以恶意的发送大量的错误交易到链上,客户端需要先下载这些交易才能进行验证,大量错误交易占用了客户端的带宽,导致正常交易被淹没在错误交易中。数据 DDOS 达到一定的程度时,会导致客户端状态计算延迟。
为了解决数据 DDOS 问题、保障应用的可用性,everFinance 提出协调者(Coordinator)的角色。应用的所有数据由协调者进行首次计算和验证,计算和验证通过后,这些数据再由协调者批量打包到 Arweave 上。协调者就像是 Ethereum 上 Rollup 的运营商,同 Rollup 一样,它们都是批量的把一批交易打包到链上,而且这些打包的数据都可以被验证。SmartWeave 的“惰性计算”保证了可验证性,Rollup 保障了数据的正确性并避免了数据 DDOS 攻击。
everPay 协议通过 DAO 进行运作,完全透明和 100% 可验证。DAO 的数据共享和计算都使用了 SCP。DAO 中共有三类成员角色,分别是:协调者(Coordinator),检查者(Detectors)和守望者(Watchmen)。另外有一个独立的组件 ProposalHub:用于采集 DAO 的提案和签名,聚合并执行提案。
协议中,所有角色都集成了相同的链下智能合约代码,每个角色都具备一致的业务规则。角色之间的合约程序没有独立的数据通讯,数据通信和下载完全使用了 Arweave。合约程序会连接 Arweave 进行数据下载,交易的顺序以 Arweave 上存储的顺序为准。合约程序获得交易数据后,在链下智能合约中进行计算,生成具备一致性的最终状态。
负责交易验证和上链。协调者使用单笔实时验证,延时批量上链模式。用户的交易发送到协调者时,服务器会进行实时的计算和验证,更新服务器余额到最新状态。协调者是高可用的后端服务程序,确保交易的顺序和正确性,在数分钟内,协调者将这段时间内的一批交易按照时间的先后顺序打包到区块链上。
协调者只有验证和上链的功能,无法对 DAO 账本进行攻击。原因是协议中的所有角色都会对账本进行独立验证,共识的形成并不由协调者决定,而是链下智能合约程序与可信的数据产生。在 everPay 协议中,共识不会被协议中的任何角色影响,SCP 保证了共识的客观性。协调者是 DAO 里的一个会计角色,进行账本的撰写,不会接触到实际资产。资产的调度由守望者进行,详见“守望者”小节。
为了保障用户体验和交易的实时性,协调者目前是一个独立节点。协调者可以在交易排序时进行审核,审核时间窗口是短暂的,从交易采集到批量上链只有 10 分钟左右的时间。协调者单节点产生的内容审核和交易排序的风险,会在代币发行后引入质押和惩罚进行规避。
everPay 协议的链下智能合约代码会开源,合约代码可以在任何人的机器上运行并且计算 everPay 交易。
任何人都可以下载链下智能合约代码成为系统中的检测者,该程序会自动加载 Arweave 上的交易数据,自动计算和验证这些交易。当程序同步到最新 Arweave 区块后,检测者可以获得应用的最终状态。检测者们运行了同一套 everPay 协议代码,同时他们的数据来源是不可篡改、可追溯的链上数据,让每一个检测者运行的最终状态都具备一致性。
守望者是 everPay 协议中的多签治理成员,在 DAO 中,守望者这个角色非常重要,它需要生成提案和签署提案,提案只有获得了大多数(大于51%)守望者的签署后才能执行。
协议的最终安全性是由 SCP 的客观性以及 Arweave 网络进行保证的,守望者承担了跨链资产锁定的安全职能。守望者生成提案要按照链下智能合约代码进行处理,提案的生成和签署都是自动化的。由于链下智能合约和链上可信数据生成的最终状态唯一,如果有守望者提交了非法的提案,协议也可以自动检测并进行应急处理。
守望者保障了多签治理运行的合法性。 计算的共识安全性由 Arweave 永久存储进行保证,因此即使在守望者较少的情况下,应用也具备较强的共识。和同矿工升级 Ethereum 节点需要获得矿工的认可一样,当链下智能合约提出修改时守望者需要认可升级的程序,并适配新的提案生成流程。
Hub 用于采集守望者的签名提案,进行提案执行。此功能不是必须的,创建 Hub 是为了更高效的收集和执行签名。
everPay 协议的账户体系非常灵活,可以支持多种链的账户体系。
目前已经支持的链地址默认就是 everPay 的账户 ID,例如 Ethereum 钱包地址 0x26…859 即 everPay 的账户 ID,Arweave 钱包地址 5NP…HXo 也是 everPay 的账户 ID。协议中的所有交易使用了 ID 对应的私钥进行签名。
everPay 目前已经支持 Ethereum 和 Arweave。随着更多链的接入,将来会支持更多的链地址成为 everPay 的账户 ID。
everPay 可以支持传统互联网账号,使用邮箱或者手机号作为账号 ID。通过 Webauthn[6] 技术,everPay 可以将手机等硬件上的加密芯片作为账户的密钥。为保障账户的安全性,账号和硬件设备进行绑定。进行交易时,用户需要通过生物识别调用硬件加密芯片进行数字签名。如果设备丢失或者需要更换设备,可以使用邮箱进行安全恢复。例如 google 邮箱账户恢复:google 的所有邮件都使用了 google 的密钥进行签署,以防止邮件伪造,这份签署可以使用密码学进行验证。everPay 的账户系统使用了邮件的签名验证功能,对邮件内容进行签名验证用于账户恢复。
账户恢复也可以通过联系人验证的方式进行。用户提前为账户设置好守卫(guards),守卫可以由多个关键联系人构成。用户需要进行账号恢复时可以通过多个守卫的签名对账户密钥进行替换。通过守卫恢复的方式和现有的智能合约钱包 Argent 非常相似。
为了满足不同的支付场景,everPay 协议支持多种支付原语。用户和商户可以根据自己的业务需求使用不同的支付原语。将来伴随更多的支付业务拓展,everPay 会支持更多的支付原语。
所有的支付原语可以通过下载 SDK everpay-js 集成到应用中。仅需要数行代码即可调用支付原语进行交易。
充值(mint)
使用 everPay 进行支付,首先需要将其他链的资产充值到协议中。充值时用户只需要消费原生链上的手续费,将 Ethereum 上的代币充值到 everPay 需要等待 6 个 Ethereum 区块,将 Arweave 上的资产充值到 everPay 需要等待 15 个 Arweave 区块。充值成功后用户在 everPay 上的资产余额会增加。
提现(burn)
资产需要回到原生链时,使用提现功能。提现时用户必须在 everPay 协议中有相应的资产余额。提现需要等待提现交易批量打包到 Arweave 后,等待守望者监听到提现交易。守望者对所有的交易进行独立验证,并生成对应的提现提案。提案被超过 51% 的守望者签署后在原生链上执行并完成提现动作。提现成功后,用户在 everPay 上的资产余额减少,原生链上用户会收到对应的资产。
转账(transfer)
在 everPay 协议上拥有资产余额的用户可以进行转账。转账属于 MetaTransaction,通常在区块链上转账需要使用原生代币进行矿工费支付,everPay 的 MetaTransaction 则支持使用转账的代币进行费用支付。转账时,用户使用账户私钥进行签名,交易发送给协调者之后会被立即验证,非法的交易无法通过协调者验证。
目前 everPay 已经支持了 Ethereum 和 Arweave 两条链的账户模型,因此转账的收款地址可以是任何的 Ethereum 地址或者 Arweave 地址,收款时不需要原生链的用户在 everPay 中注册,everPay 默认支持所有的有效 Ethereum 地址和 Arweave 地址。将来 everPay 会集成更多的区块链,支持更多的区块链账户体系。
everPay 支持将多笔转账绑定到一笔交易中进行事务性执行。在进行批量转账的时候,绑定的多笔转账必须全部成功,整个交易才能达成;如果多笔转账中如果有一笔转账失败,则整个交易进行事务性的回滚。
批量转账除了可以支持一次性向多人进行付款,也可用于开发去中心化交易兑换,保证多个对手方的交易达成才进行有效结算。
原子兑换是专门为订单薄模式交易设计的交易原语。不同于批量转账,原子兑换必须有 maker 和 taker 两个对手方,会对 maker 和 taker 的资产进行原子交换。如果 maker 和 taker 的资产交换不能同时满足,原子兑换会进行事务性的回滚。
部分场景下,为了促成交易达成,资产需要被锁定一段时间并等到对手方提供凭证才能进行结算。如在线上购物时如何保护买卖双方不受到侵害。买方 a 需要支付一笔费用 A 购买物品 B,卖方 b 收到订单后,需要等待三天时间才能将物品 B 寄送到 a 手里。此时存在多种欺诈的可能性:
使用时间锁能解决欺诈问题:a 向 b 支付一笔带时间锁的费用,费用锁定期限为4 天,需要提供证明才能完成支付。在规定期限内,b 不能提供证明则费用退回 a,提供证明则费用完成支付。
everPay 协议可以支持多种凭证证明的时间锁,例如:使用 Ethereum 上的信息进行支付解锁,或通过第三方仲裁进行支付解锁等。
everPay 提供接近传统支付体验的转账功能。
进行区块链交易需要等待交易打包,交易打包的速度从数秒到几十分钟不等,区块的交易体验远远达不到普通的支付体验需求。everPay 协议使用协调者采集交易,可以进行实时确认的转账交易。协调者服务器在收到用户交易时会立即进行计算和验证,在毫秒级返回交易状态。
使用 SCP 构建的 everPay 易于构建跨链系统[7]。目前 everPay 已经集成 Ethereum 和 Arweave 两条链,并将 Arweave 原生代币 AR 映射到 Ethereum 生成 WAR[8]。WAR 是 AR 的 ERC20 版本,WAR 的生成由 everPay 的 DAO 进行治理,具备透明性和 100% 可验证。everPay 能提供极好的跨链提现,使用 Arweave 钱包 ArConnect 连接 everPay 进行 AR 充值,在提现时候选择 Ethereum 填写对应的以太坊地址地址就可以完成跨链,整个过程在一小时内完成。
协议的跨链特性会扩展到不同的区块链,不同的代币。未来 everPay 会成为一个支持多链的中继代币支付层。
everPay 支持各种链的账户,甚至可以支持互联网账户。链下计算让 everPay 的账户体系具备最佳的灵活性。
现有的区块链账户对普通用户门槛太高,非对称加密让用户难以理解,助记词的安全管理导致密钥泄露事件频繁发生。everPay 将为用户打造智能账户,将账户和硬件设备绑定保障安全性,硬件设备的生物识别技术提升了易用性。智能账户和现有的互联网账户具备相同的体验,让用户可以轻松的使用区块链。
支付原语中的批量转账和原子兑换是打造去中心化交易所[9]的基础工具。
批量转账可以在多个对手方之间进行事务性兑换,其中一个对手方的交易失败则会让整个交易回滚,使用批量转账功能可以为用户和做市商之间建立去信任化的兑换方式,在签署批量转账交易后,仅有满足兑换双方的兑换要求交易才能成交。
原子兑换是为订单薄模式的去中心化交易所提供的基础支付原语。用户可以为既定价格签署订单,同意该订单签署的任何第三方都可以对该订单进行吃单。交易双方的兑换都必须满足既定价格订单才能成交。
everPay 协议会为用户提供跨链聚合理财。通过链下计算收集用户的理财需求,在一层进行一次性执行,可以极大地降低了区块链理财成本。配合 everPay 的智能账户,区块链理财的门槛也随之降低,用户可以像使用传统理财产品一样体验区块链理财。
使用理财时,用户需要使用密钥完成理财合约签署,资产通过时间锁在 everPay 中进行锁定。这些理财合约会被守望者进行解释并生成理财提案,合法的提案达到 51% 的守望者签署后在 Ethereum 上执行。
everPay 协议的共识由权威机构参与 DAO 进行管理。随着业务和技术的发展,在保障安全性和易用性的前提下,将逐渐的过度到代币治理模式。
目前,everPay 没有制定代币发行计划,会集中精力在基础设施打造和生态建设。团队会积极探索代币治理模型,寻找合适的时机将 everPay 协议过渡到完全的 DAO。
[1] everPay: A Trusted Cross-chain Payment Protocol. URL: https://medium.com/everfinance/everpay-a-trusted-cross-chain-payment-protocol-eba4a0af7d66
[2] Stripe. URL: https://stripe.com
[3] Storage-based Consensus Paradigm. URL: https://mirror.xyz/0xDc19464589c1cfdD10AEdcC1d09336622b282652/KCYNKCIhFvTZ1DmD7IpXr3p8di31ecC283HgMDqasmU
[4] A Storage-based Computation Paradigm Enabled by Arweave. URL: https://medium.com/everfinance/a-storage-based-computation-paradigm-enabled-by-arweave-de799ae8c424
[5] SmartWeave: Arweave smart contracts. URL: https://arwiki.wiki/#/en/smartweave
[6] WebAuthn. URL: https://webauthn.io
[7] Arweave to Ethereum cross-chain system design. URL: https://mirror.xyz/0xa2026731B31E4DFBa78314bDBfBFDC8cF5F761F8/Xqv0FgTzmKpgUymYYm19tz9svO-rsg_xR4aQqBCoNc4
[8] What is Wrapped AR? URL: https://medium.com/everfinance/what-is-wrapped-ar-c4b4375290b9
[9] Build DEX on everPay using Bundle transactions. URL: https://medium.com/everfinance/build-dex-on-everpay-using-bundle-transactions-bbd8e4bd0268
英文原文: