Zhuang's Diary

言之有物,持之以恒

一、去中心化的KYC/AML

区块链可以被视为区块链中心化的证书颁发机构,可以将身份维护映射到公钥。智能合约还可以增加逻辑,实现ACL(权限赋予、撤销、恢复),减轻用户的密钥管理负担。这通常称之为Self-sovereign Identity,目前DID(decentralized Identify)的标准初稿已经发布。

二、去中心化的自动做市商、订单薄以及订单撮合

(一)自动做市商模式

典型代表有Uniswap、Bancor和Kyber。

Bancor和Kyber都采用了中央对手方模式提供交易流动性,其中央对手方是区块链上的一个智能合约。

Bancor交易流程:1)Taker找到一个以代币A和B为储备代币的Bancor合约,向合约中转入储备代币A,获得智能代币A_B_RESERVE,兑换价格有智能合约根据公式计算;2)Taker向智能代币合约转入智能代币A_B_RESERVE,获取储备代币B。

Kyber交易流程:1)Makers向智能合约写入他们的交易报价和数量信息;2)Takers查询链上的报价信息,并根据报价发送自己的订单;3)交易所合约执行交易并通知交易双方。

因此不存在违约的风险。两者的差异在Bancor提供的买卖报价是根绝其储备资产动态计算的,而Kyber的报价则由储备员持续更新。

(二)订单撮合模式
1)链上订单簿

Ripple、Stellar、Etherdelta、OasisDexdYdX、Bitshares等项目采用链上订单簿模式,所有未完成的挂盘订单都会记录在区块链上的订单集(Order Book)中,订单集中的订单能否成交都取决于买卖方的挂盘及交易时设定的成交策略。在买卖盘的资产匹配时,跨资产类型的交易可以通过挂盘直接成交方式完成;在Ripple/Stellar中,若无直接匹配的资产,则网络会在订单集中寻找可以利用中间资产达成买卖交易的交易路径。

Etherdelta的技术方案中,充值、提现、挂单、结算全部由智能合约完成。基本思路是:maker用私钥签名一笔订单,提交到链上,maker挂单时可以选择在多少个区块后若订单未成交则自动取消。随后,taker从订单簿中选择想要成交的订单,生成对应的交易,交易签名后提交至链上智能合约。智能合约验证完成订单中交易者的签名和订单有效时间后,进行资金结算。Etherdelta没有自动撮合订单的机制,每笔交易需链上确定,其交易效率收到以太坊的影响,同时还可能因链上确认存在问题而导致成交失败。

链上订单簿模式的可用性存在一些问题,例如交易费用高、订单修改成本高、市场割裂导致深度不够等等。

2)链外订单簿

0x协议没有充值和提现过程,而是直接授权符合ERC20的智能合约进行token转账。其机制是:链下订单中继、链上最终结算。只有在结算时才上链。0x由中继链进行订单的托管和维护。中继链收取手续费,其事先创建了交易费用计划和地址。其规则时:中继链从交易者接受并检查订单,检查通过后将订单发至订单集,订单集完成处理后将订单提交给0x的智能合约,完成链上操作。

出于流动性共享的需求,0x以及airswap协议希望打通不同去中心化交易所的流动性壁垒,实现订单在不同交易所和relayer之间自由流转。以传统场外交易业务做对比,0x协议中relayer的角色和经纪商相似,提供订单转发和撮合服务,但交易的最终清算由订单的taker发起,无需经过relayer,由区块链直接结算,不存在违约风险。

0x和airswap协议目前都仅服务于ERC20的直接交易,对于低流动性资产有一定的局限性。

0x交易流程:1)Maker发送一个签名订单给Relayer(或则直接发送给Taker);2)Taker向Relayer查询未成交订单;3)Taker选择一个订单进行匹配;4)Taker向交易所合约提交订单。

airswap交易流程:1)Maker广播一个交易对表明成交意愿,给到Indexer;2)Taker向Indexer查询交易对;3)Taker获取到可作为交易对手方的Maker信息;4)Maker和Taker直接协商一个合适的交易条件;5)Taker向交易所合约提交订单,执行交易。

三、去中心化的清结算服务

(一)备付金模式

Taker事先使用现金,兑换成为ERC20 Token—和现金1:1,存入区块链账户;同时,该Token可以在交易所随意兑换成为现金。交易时,使用该Token进行原子交易。此方式不存在资金违约的情况。

(二)信用模式

Taker根据自身的信用,在交易所内即可透资一定额度;同时,该Token额度不可以在交易所兑换成为现金。交易时,使用该Token进行原子交易。Maker侧可以使用该Token兑换现金,由银行(或者交易所)垫付,垫付资金即为短期贷款,此方式存在资金违约的可能。

(三)跨链清结算

如哈希锁定(hash-locking,如雷电网络)、侧链(sidechains,如开发进行中的cosmos)、公证人(notary schemes,如Interledger)

四、去中心化的行情发布

优点:区块链的开放性。价格信息的多种来源,不存在信息垄断,有助于促进市场竞争,使整个市场价格更为透明与高效。

风险:某些局部市场因流动性不足,易于被操纵,恶意的交易者可以发布虚假订单,伪造成交量,或则针对不同交易协议的弱点进行攻击,以达到影响全局市场的目的。

因此,去中心化交易的体系中建立合理的行情发布机制,既实现价格透明,同时又保障全局价格的真实性。

五、去中心化交易所的监管合规

充分借助科技监管(区块链、大数据、人工智能等):设置监管接入点,对节点运行、合约代码进行技术巡查;对KYC、AML、信息披露、风险监测进行实时报送。对项目尽调、风险评级展开详尽的调查和分析。

六、与传统中心化交易的对比分析

(一)安全性

区块链在系统弹性、可靠性、健壮性上具有较好应对节点故障的能力。

在去中心化交易所中,有可能存在设计上的缺陷而被黑客攻击,甚至导致Token被非法转移的情况。

(二)交易性能

较快的去中心化交易所可以达到2s的要以延时,1000的系统吞吐量,相对于1ms的成盘速度的传统证券交易所系统,在性能上还有较大的差距。

(三)结算风险

区块链中,资产转移指令和现金转移指令同时作为单个交易的最后一步执行,无结算风险。但对于跨链资产交易,可能面临结算风险。

(四)隐私保护

传统中心化交易中,用户入场需要经过身份认证,且交易过程完全由中心机构记录,若监管缺失,可能导致大量敏感信息泄露。去中心化的方案可以更好地解耦用户敏感信息存储与用户资金交易。

1. https://ethereumnodes.com/

该网页内收集了以太坊各个节点的服务。如:Infura、Alchemy、MyCrypto等

2. https://dashboard.alchemyapi.io/

Alchemy Supernode是最广泛使用的以太坊API。获得节点的所有功能,包括JSON-RPC支持,直接从dashboard进行JSON-RPC调用,并快速扫描最近的请求和错误。Alchemy Notify允许开发人员将实时推送通知发送给用户,以进行挖矿,延迟和掉落的交易,赚取的利息,已烧掉的令牌和其他重要事件。包括强大的网络钩子和一键式集成。Alchemy Monitor是一套全面的仪表板和警报,可用于检测应用程序的运行状况,性能和用户行为。

用户包括:kyber network、0x、MEW、opensea等等

3. https://mycrypto.com/

MyCrypto是一个开放源代码的客户端工具,用于生成以太币钱包,处理转账、合约管理等功能。自2015年以来,由社区开发并为社区开发。

4. EtherAddressLookup

  • 使以太坊地址(和ENS地址)成为您喜欢的区块浏览器的链接。

  • 使用0x地址或交易哈希搜索区块链,并获得可读的结果。

  • 在地址中添加标签-可以在地址中添加可读标签,则无需记住较长的十六进制字符串。创建与区块浏览器功能集成的自己的地址簿。

  • 阻止您进入恶意域,EAL会每天更新一次已知钓鱼域的黑名单,以帮助您保护资金/秘密安全。黑名单每10分钟保存在本地到扩展程序中,以保持您的隐私完整。您唯一一次点击第三方服务的时间是该扩展程序缓存黑名单时,服务方是Github。

  • 等等功能。

5. https://governance.docs.pokt.network/

pokt系统关于链治理的说明文档。

6.https://www.myetherwallet.com/

MyEtherWallet(MEW)是一个免费的客户端界面,可帮助您与以太坊区块链进行交互。具体包含转账、合约管理等功能。

相关文章:

  1. 关于Geth监控
  2. 适合以太坊作为联盟链的监控项目
  3. 关于PBFT监控
  4. Polkadot链上治理机制浅析
  5. 区块链内的共识与信任

原文链接==>https://medium.com/aztec-protocol/aztec-zkrollup-layer-2-privacy-1978e90ee3b6

一句话总结:Aztec 2.0正在帮以太坊扩容:

  • 基于 zkRollup 的 Layer 2 网络,在 Ropsten 上运行
  • 默认私密转账 —— 通过私密方式发送你的 ERC 20 代币
  • 社交密钥恢复机制
  • 可扩展的 DeFi 私密访问 (Uniswap 等)
  • 相比 Aztec 1.0,gas 使用量降低了 200 倍
  • 设计安全性:所有交易都在链上验证
  • 通过 Noir(私密合约语言)实现可编程的隐私性

上述功能是我们的顶尖研究团队的成果。过去 15 个月来,我们的团队为社区贡献了 PLONK 和 Plookup,现已是 zkSNARK 的主要标准。

即刻体验

开发者可以直接参阅我们的文档;

如果你想查看我们在 Ropsten 上运行的网络,或体验我们的命令行 rollup 服务,请点击下方链接:

隐私就现在

经典的 Layer 2 架构优先提供可扩展性,隐私性则暂时搁置。

Aztec 则不同。我们在 PLONK 上的研究让我们发现, zkSNARK 有两种完全不同的使用方法:

  1. 每个交易都被编码成 zkSNARK,来保护用户数据
  2. 中继者再将这些交易打包成一个一个批次,然后再 “汇总(rollup)”成一个 zkSNARK 证明(这条对 rollup 内部计算有效性的证明会被发送到以太坊上,从而实现可扩展性)

使用 zkSNARK 技术,网络可按需扩展至每秒约 300 笔交易的硬性限制,同时保留链上数据可用性。

跨资产扩展

通常来说,rollup 所聚合的交易都是 “同质的” —— 即,它们都属于相同类型。由于 Aztec 交易都是 zkSNARK 证明,它们可以全部到捆绑到一个 zkRollup 中。

具体来说,私密 DeFi 交易可以与 zkDAI 付款或 Uniswap 交易捆绑到一个 rollup 中。

Noir 编程语言:私密智能合约

Noir 是一种开源脚本语言,可以让开发者轻松编写与 Aztec 2.0 兼容的 zkSNARK 交易。

Noir 为开发者提供了工具,可以用来为主网协议编写自定义逻辑,从 DeFi 到资本市场再到订单簿。

Noir 可以让开发者:

  • 自定义私密交易
  • 用任意椭圆曲线生成签名
  • 用电路来调用以太坊合约
  • Aztec 标准库 —— 常见密码学原语的高效已审核版本

社交恢复

用户账户不需要关联以太坊地址,初次接收资金前也不需要链上交易来开户

可以使用人类可读的账户名——也就是说,你的账户名可以是 @MontezumaII 而非 0x48af9…

重点部分:

  • 账户支持多个密钥
  • 内设社交恢复机制
  • 支付密钥独立于加密密钥 —— 这有助于让合规应用保留简洁且符合 KYC 要求的记录

减少 Gas 消耗量

相比 Aztec 1.0,Aztec 2.0 可将 gas 成本降低 200 倍。

Aztec 目前提供哪些功能

  • 存款:将代币存入 Aztec 来隐蔽其踪迹
  • 私密付款:加密的余额和身份 —— 面向所有币种
  • 多设备恢复:避免私钥丢失所带来的风险
  • 取款:通过匿名方式将你的资产退回到 Layer 1 上。
  • 应急出口:即使所有 rollup 提供商都出了问题,你也可以退出系统。

上述功能都可以通过我们的软件开发工具包实现。

示例:Aztec 网络上的 Uniswap

我们来看一下 DeFi 是如何在 Aztec 2.0 上运作的:

  1. 用户在 Uniswap 上将余额中的一部分 Dai兑换成以太币
  2. rollup 将 100 笔同类交易捆绑到同一笔交易中
  3. Aztec 合约代表用户接收以太币
  4. 以太币由池中参与者按比例持有
  5. 每个参与者都受益于大型匿名集,并且只需支付较低的 gas 价格

大多数 DeFi 协议都可以通过这种方式集成,更重要的是,可以使用已经过审计的 Layer 1 代码。

从今天起,开发者可以通过我们的 TypeScript SDK 访问 Aztec 网络。只需运行以下指令即可。

1
yarn add @aztec/sdk

共识穿透

我们先来给共识穿透下个定义, 共识穿透是指两条不同共识的区块链,如何从共识层打通,让两条链互联有无,最终实现共识跨链。

共识穿透有两种路径

1.从点对点网络层着手,直接和共识交互。

2.从交易入手,通过交易输入到区块链共识。

共识穿透是选择 “出块”共识实施,还是在“确认块”共识实施较好呢?当然是在“确认块”实施有意义,因为跨链交互产生的区块或者交易信息,必须是确认的。

Polkadot的治理分为三个阶段,分别为提案投票计票阶段

线上链接 ==> https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/democracy

提案阶段

可以通过以下几种方式启动提案:

  1. 由DOT持有人提交的公开提案。任何DOT持有人都可以通过抵押最少数量的DOT来提交公开提案,支持该提案的人需要抵押相同数量的DOT以认可该提案。公开提案存储在队列中,按照抵押的DOT数量进行排序,抵押的DOT数最多的提案会定期提交投票阶段。进入投票阶段后,抵押的DOT将被返还给持有人;
  2. 理事会提交的理事会提案。理事会提交的提案也存储在队列中,理事会全员同意一个提案或者大多数理事会成员同意一个提案时,该提案便可以提交到投票阶段;
  3. 作为前序公投执行的一部分而提交的提案;
  4. 技术委员会提交的紧急提案。一般是Polkadot网络出现了bug,需要紧急修复而提交的紧急提案。

投票阶段

每隔 28天,将会有一个提案进行定期全民投票。

这个提案来自DOT持有人提交的公共提案队列或者理事会提交的提案队列,在两个队列之间交替进行。

比如这一次的提案来自DOT持有人提交的公共提案队列,28天以后的下一个投票阶段,提案便是来自理事会提交的提案队列。一般情况下同一时间段内只能进行一个投票,除非有紧急提案,紧急提案可以与定期投票同时举行。

从投票结束到实施更改之间的时间称为执行延迟期。对于启动投票的前两种方式,该时间固定为 28 天。对于第三种方式,可以根据需要进行设置。紧急提案会有一个较短的执行时间。

投票者可以投赞成或反对票,或者放弃投票。投票者如果要对公共提案进行投票,需要锁定一定数量的DOT,并且通常至少要锁定至在公投票结束后的执行延迟期内。

投票的权重由锁定的DOT数量和锁定时间决定,因此,即使你拥有较少的DOT,但是如果锁定时间足够长,也可能拥有相对将高的权重;相反的,如果锁定时间很短,即便锁定了较多DOT,权重也不一定较高。

采用这种机制是为了确保需要最小限度的经济投入并防止卖票行为,同时确保了长期致力于该制度的投票者有更大的发言权。

计票阶段

根据不同的实体提出的议案,以及是否所有理事会成员都投票赞成,Polkadot提供了三种不同的计票方案。

如下所示:

实体 计票方案
公开提案 正投票率偏差
理事会(全票赞成) 负投票率偏差
理事会(多数赞成) 简单多数制

下面来解释一下这三种方案。首先,定义四个术语:

术语 含义
approve 赞成票数
against 反对票数
turnout 投票的代币总数
electorate 网络中的DOT发行总数

▲ 正投票率偏差

该方案使用以下公式来表示,只有当不等式成立的时候,投票才通过。可以看到,在投票的代币总数较少的时候,需要得到绝大多数的赞成票数才能通过投票;当投票的代币总数越来越多,直至接近网络中的DOT发行总数时,赞成总数只需要超过半数就可以投票通过,此时演变成了简单多数制方案(见下文)。

▲ 负投票率偏差

该方案使用以下公式表示,该方案和上面的正投票率偏差正好相反:当投票的代币总数较少时,仅需要少量的赞成票数即可通过投票;当投票的代币总数达到网络中的DOT发行总数时,需要超过半数才能通过投票,此时也演变成了简单多数制方案。

▲ 该方案用以下公式表示,该方案显而易见,即为简单的少数服从多数思想。

提出重要的提案

理事会提出的候选提案,需要获得绝大部分理事会成员的赞成票,并且没有成员投反对票。一个成员只能对一个提案投一次反对票,如果有成员对提案投了反对票,则需要进入冷静期,如果在冷静期之后重再次获得了大多数成员的赞成票,则该提案不可以再被否决。获得理事会成员多数票赞成的提案,将以简单多数制的投票方案进行投票。获得理事会成员全票赞成的提案,采用负投票率偏差的机制进行投票。

取消危险或恶意的提案

超过理事会三分之二成员的同意,可以取消投票。如果取消投票的争议很大,无法获得三分之二多数同意,那么将由全体利益相关者即DOT持有人来决定该提案。

理事会成员选举

Polkadot理事会将有23个席位,每个月进行一次投票选举,所有DOT持有人均可自由注册竞选理事会成员的资格,并可以给自己支持的候选人进行投票,投票权与其所持股份成正比。

这里的投票方式为NPOS选举验证人的方式一样。

Polkadot治理机制优缺点

传统的区块链一般采用链下治理的方式,拿以太坊举例,由以太坊基金会在github上收集改进提案,然后由生态参与者进行讨论表达观点,之后由开发团队决定是否采纳提案。如果采纳,将对代码进行更新和升级,最后矿工节点决定是否使用新的代码以支持该提案。

和上面这种链下治理相比,Polkadot的链上治理机制有几个明显的优点

  1. Polkadot采用链上存储的WebAssembly代码,使得矿工节点无需重启便可以使用新的提案,从技术上避免了硬分叉。而链下治理的区块链,如果最后部分矿工或者节点运营商不支持提案,则不会使用更新后的代码,这样便出现了硬分叉。
  2. Polkadot采用的链上治理每一个阶段都有明确的时间。而链下治理的时间节点不定,github上可以看到很多以太坊多年前的提案还处于“draft”状态。
  3. 每一个DOT持有人都可以参与Polkadot治理,社区治理权在DOT持有人手中。而采用链下治理,最终决定权在于项目的核心开发者,存在中心化问题。

Polkadot的治理机制还是存在以下几个问题

  1. 大部分DOT持有人仅仅只是参与投资,不会参与社区治理,实际参与社区治理的用户数量不多,导致投票率不高。
  2. 虽然治理最终决定权不在项目的开发者,但是持有大量DOT的用户可以影响投票结果,也降低了链上治理的去中心化程度。