[Polkadot] 波卡链学习笔记
前言
早已听闻波卡链大名,但从未真正静下心来了解。最近难得有些属于自己的时间了,故将学习到的记录下来。
介绍
相信大家对波卡链都有些许了解,在这我就长话短说,简单介绍一下。
Polkadot是由Web3基金会和Parity Technologies开发的,两者都是由Gavin Wood博士创建的,他也是以太坊的联合创始人和前CTO。2016年,Gavin Wood博士通过白皮书[1]分享了他对Polkadot的设想及其技术轮廓;用他的话来说,就是创建“以太坊的下一个版本”,它将补充以太坊2.0不太理想的方面。
Polkadot是一个完全“分片”的区块链,它的设计基于分片(一种数据库拆分技术),使多个链能够并行处理它们的交易[2]。每个区块链分片称为连接到中继链的“副链”。中继链就是整个系统的主要枢纽。此外,Polkadot可以实现区块链的互操作性,其允许异构区块链之间进行通信。
内部结构
Polkadot网络比较关键的部分有:Relay Chain、Parachains、Parathreads 和 Bridges。其结构如下图所示。
中继链
中继链的作用就是将一条链的信息/代币/资产转移到另一条链。中继链上的节点是波卡生态中主要的矿工。波卡采用的是经典的股权证明(PoS)算法的变体,即提名股权证明(NPoS)。
平行链
连接到中继链的区块链被称为 平行链 (Parachain),平行链受到其保护。共享并受益于波卡的安全性、可伸缩性、互操作性和治理。与中继链连接的平行链可以有很多类型,可以是Bitcoin、Ethereum、Tezos、Edgeware , 他们可以以自身方式产生区块 ,例如比特币可以以自己的规范产生区块 ,Ethereum可以以自己的规范产生区块,Tezos可以以自己的规范产生区块,智能合约区块链Edgeware也可以以自己的规则产生区块。
波卡支持有限数量的平行链,目前估计约有 100 个。由于插槽的数量是有限的,有以下几种方法来分配它们:
① 治理授权的平行链,或 “公益” 平行链 (common good parachains)
② 通过蜡烛拍卖获取的平行链
平行线程
与平行链不同的是,平行线程不租用中继链上的专用插槽。“公益”平行链由波卡的链上治理系统分配,它们被认为是网络的 “公共利益”,比如作为连接其他网络或链的桥接。因为它们不是通过拍卖过程分配的,所以它们的槽租期不会过期,只能由治理主体撤销。公用事业链的例子包括: 资产转移(可替代和不可替代)链、智能合约链和桥。
桥
Polkadot桥是一个专门的平行链,也由collators维护,处理中继链和外部主权区块链(例如比特币)之间的通信。在这方面,桥接提供了区块链之间的双向兼容性和互操作性;允许两个网络之间的任意数据交换。
蜡烛拍卖
那什么是蜡烛拍卖呢?
蜡烛拍卖就是:拍卖师在感兴趣的投标人面前点燃一支蜡烛,然后他们出价,直到蜡烛熄灭。蜡烛熄灭时出价最高的人赢得了该物品并支付了他的出价。皮内利拍卖是最早有详细历史记载的蜡烛拍卖之一。蜡烛拍卖早在中世纪的法国就被使用了(记录至少可以追溯到 1368 年),主要是为了解决继承纠纷。其他记录包括英国的船舶和毛皮拍卖。[3]
蜡烛拍卖仅在相对较短的时间内使用。(它们最终被拍卖会所取代,拍卖师用指挥棒敲三下宣布结束,就像我们今天所知道的那样。)它们消失的原因是它们运行起来很成问题。具体来说,当时的蜡烛拍卖大多面临以下三个问题。
① 恶意[取消]竞标,直到蜡烛[被]完全烧毁,结果遗产[几乎]从未以真正的价值售出。这被称为“狙击活动”。
② 反复尝试操纵结束时间,比如故意咳嗽使蜡烛熄灭。
③ 一旦蜡烛熄灭,往往很难准确确定获胜者,这可能会导致激烈的争论。例如,塞缪尔·佩皮斯(Samuel Pepys)在观察英国的一场蜡烛拍卖时在他的日记中写道,他看到后感到震惊:“当蜡烛熄灭时,他们如何哭喊和争论是谁先出价的。”
那既然有上面的问题,为什么还要用蜡烛拍卖呢?
因为刚刚所说的问题都是链下拍卖的问题,当我们将场景转移到区块链上又会有什么不一样呢?
① 当如果拍卖和出售的物品都在区块链上,智能合约可以轻松解决“狙击”问题,一旦中标者确定了,就会触发竞拍物的转移。并不存在拍卖人抵赖这种可能性。
② 密码学的最新进展允许不可变的随机性,并且可以被网络中的每个人验证。因此,在区块链蜡烛拍卖中,投标人不能随意中止竞拍,拍卖师也不能谎报结束时间。
③ 在现代拍卖(线上和线下)中,出价的确切顺序会被记录下来,这应该会减少此类争议,但不能完全避免。但在区块链拍中:如果投标记录在链上,那么每个人都可以验证所有投标的数量和时间,完全不需要信任。
那么,此时可以知道在区块链进行拍卖可以避免上面说的问题。那为什么要用呢?
是因为蜡烛拍卖有助于解决区块链的拍卖通常会面临的两个主要问题:抢先交易和投标人之间智能合约的存在。[3]
抢先交易(根据特权或内幕信息在其他人之前采取行动)会出现在区块链上,因为即将发生的交易在上链之前,就已被参与者所知。对于在区块链上的拍卖实施过程,一些投标人可以在其他投标人的投标生效之前看到并对其做出反应。
例如,在第一价格拍卖(中标者支付最高出价的拍卖)中,这使投标者有可能随心所欲地投出高于其他投标者的价格。但是,令人担忧的是,抢先交易的存在使某些竞标者很没有参与感,从而抑制了整体竞标,继而减少了拍卖的收入。此外,拍卖效率也可能会受到影响,因为出售的商品流向了技术最先进的投标人,而不是估值最高的投标人。
正如 Jeff Burdges 和 Luca de Feo 在 Web 3 基金会的研究中所讨论的那样,目前存在解决前端运行问题的加密解决方案。然而,它们要么是非常计算密集型的,要么要求投标人采取多种行动。但最重要的是,如果投标本身是通过智能合约执行的,那么加密解决方案就无法正常工作。原因在于,智能合约对应的是公开可见的代码。因此,它们对待售商品的估价和它们的策略在拍卖前就已公之于众。鉴于智能合约的广泛使用,在区块链上实现的任何拍卖中,潜在投标人之间的智能合约存在的可能性很高。
智能合约投标人同样面临透明度问题。如果事先知道智能合约的估值,那么拍卖者就有可能注册一个小号并进行所谓的 shill 投标(即旨在提高获胜者支付的价格的投标)。这在第二价格拍卖(即中标者支付第二高出价的拍卖)中尤其成问题。在这样的拍卖中,每个人都必须诚实投标,因此,拍卖者可能会在拍卖中,做出欺骗智能合约的行为(通过提交略低于智能合约估值的出价) 。但预见到这种行为的智能合约,很可能一开始就对参与其中犹豫不决。这又导致了效率问题,因为决定不参与的智能合约很可能是估值最高的合约。
在 Häfner 和 Stewart 在 2021 年的研究中,证明蜡烛拍卖方式是一个很好的选择。结果表明,在适当选择结束时间分布的情况下,对于第一个投标人来说,随着时间的推移,提出更多的出价是最有优的,而第二个投标人在她对出售的商品的估价较高时,只需与目前的出价相匹配。因此,蜡烛拍卖提供了一些安全措施,以抵御险恶的投标攻击:为了将价格提高到均衡价格之上,拍卖商必须在较早的一轮中提交更高的中标价。但这样做的代价是,如果拍卖恰好在这段时间内结束,那么其中一名竞拍者就会提前支付一笔款项。此外,随机结束时间比固定结束时间更能吸引竞标者的参与。在固定的结束时间下,两个投标人可能会等待投标直到最后一个时期。另一方面,随机结束时间给投标人带来了提前投标的压力。尤其是,由于抢先出价者在其估值较高时会匹配当前最高出价,因此抢先出价者可以通过随着时间的推移提交增加的出价来赢得优势。、研究发现随机结束时间比固定结束时间有着更高的中标率。由于投标人随着时间的推移提交越来越高的出价,因此随机结束规则意味着有时拍卖者还必须接受前几轮的较低出价。然而,随机结束时间的会使投标人的整体出价更高,从而会有更高的平均中标价格。
综上所述,蜡烛拍卖形式能够缓解由抢先交易引起的所有三个问题:(1)弱势竞标者的低效用;(2) 竞拍收入低;(3)效率低。鉴于这些特性,可以期待蜡烛拍卖成为区块链上所有拍卖的标准机制。
今天就先写到这吧,我先溜啦(*^▽^*)
参考文献
[1] G. Wood, “Polkadot: Vision for a heterogeneous multi-chain framework,” White Paper, vol. 21, pp. 2327–4662, 2016.
[2] G. Wang, Z. J. Shi, M. Nixon, and S. Han, “Sok: Sharding on blockchain,” in Proceedings of the 1st ACM Conference on Advances in Financial Technologies, 2019, pp. 41–61.
[Polkadot] 波卡链学习笔记的更多相关文章
- GNU工具链学习笔记
GNU工具链学习笔记 1..so为动态链接库,.a为静态连接库.他们在Linux下按照ELF格式存储.ELF有四种文件类型.可重定位文件(Relocatable file,*.o,*.a),包含代码和 ...
- JavaScript原型(链)学习笔记
javascript是基于原型的一门脚本语言,那究竟原型是什么? 本文将从以下几个方面重点阐述原型 构造函数是什么? 构造函数和我们常见的Array String有什么关系? 原型的使用? __pro ...
- JavaScript作用域(链)学习笔记
作用域是javascript老生常谈的问题,在面试题中也经常出现.此文记录本人对js作用域的理解.从以下三个方面深入探讨js作用域和js作用域链. 1.什么是作用域? 2.什么是作用域链? 3.常见面 ...
- 区块链学习笔记:D03 区块链在各行业领域的应用(一)
今天主要是学习了区块链在金融和供应链领域的应用,重点体现了区块链多方参与.透明可信.防篡改防抵赖的技术优势 区块链的应用场景最早是在金融行业应用较多,后续逐步扩展到传统行业,如:供应链.政务服务.物联 ...
- 区块链学习笔记:DAY01 区块链的技术原理
其实很早之前就听过区块链,也看过有关区块链的介绍,那个时候的理解主要还是一句话:分布式记账 然后开始关注比特币,听了有几年了,对于其来历.用途其实一直都是一知半解. 这次的课算是第一次以一个学员的身份 ...
- javascript作用域链学习笔记
作用域链 "JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里." --权威指南 在JavaScript中,一切皆对象,包括函数.函数对象和其它对象 ...
- JavaScript原型与原型链学习笔记
一.什么是原型?原型是一个对象,其他对象可以通过它实现属性继承.简单的说就是任何一个对象都可以成为原型 prototype属性: 我们创建的每个函数都有一个prototype属性,这个属性是一个指针, ...
- javaScript 原型与原型链学习笔记
javaScript中,原型是常用到一种方式,它能降低储存占用,写出更高效的代码 原型常用到的则是prototype属性 JavaScript prototype 属性 定义和用法 prototype ...
- 区块链学习笔记:DAY05 如何使用公有云区块链服务
这是最后一节课了,主要讲华为云在云区块链提供的服务,如何基于华为云BCS来构建应用 先来个简单的比喻: 1.有关BaaS的范围定义 包含物理主机.虚拟主机.容器服务.区块链.智能合约和服务 2.华为云 ...
- 区块链学习笔记:D04 区块链在各行业领域的应用(二)
这节课主要是政务领域.版权存证领域.能源领域的应用案例介绍 1.房屋租赁联盟链 特点:真实可信.透明补贴.便于追溯.公共监督 节点:房屋运营节点.房管局节点.社保局节点.财政局节点.教育部门节点(多节 ...
随机推荐
- DOS文档
- 好书推荐之Mysql三剑客 :《高性能Mysql》、《Mysql技术内幕》、《数据库索引设计与优化》
Mysql三剑客系列书籍: 大佬推荐 首先推荐<高性能 MySQL>,这本书是 MySQL 领域的经典之作,拥有广泛的影响力.不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习.不 ...
- SSH 克隆跟HTTP 克隆地址的区别
1.使用SSH 克隆 需要事先把本机生成的SSH公钥配置到项目中,然后直接复制ssh克隆地址就能直接克隆了 2.使用HTTP克隆 可以不配置本机的SSH公钥,但是克隆时需要使用项目用户的账号密码登录进 ...
- 1.Ceph 基础篇 - 存储基础及架构介绍
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485232&idx=1&sn=ff0e93b9 ...
- rabbitmq的内存节点和磁盘节点
RabbitMQ集群里有内存节点与磁盘节点之分. 所谓内存节点,就是将元数据(metadata)都放在内存里,磁盘节点就是放在磁盘上.(内存节点将全部的队列,交换器,绑定关系,用户,权限,和vhost ...
- 在 Fedora 中使用 Cockpit 创建虚拟机
本文向你展示如何在 Fedora 31 上使用安装 Cockpit 所需软件来创建和管理虚拟机.Cockpit 是一个交互式管理界面,可让你在任何受支持的 Web 浏览器上访问和管理系统.随着 vir ...
- [基础] BS/CS 区别 Http/Https 区别 中间件请求
BS和CS的区别: 1.BS结构:Browser-Server-从浏览器到服务器,浏览器打开的所有内容都属于BS(三大主流浏览器Safari.Chrome和Firefo) 2.CS结构:Cli ...
- MES系统和ERP系统的区别是什么?
首先得明白一点:MES(Manufacturing Execution System,即制造执行系统)系统跟ERP(Enterprise Resource Planning,企业资源计划)系统是两个完 ...
- Java实现6种常见排序
1.冒泡排序(Bubble Sort) 第0轮 3 1 4 1 5 9 2 6 5 3 5 8 9 第1轮 1 3 1 4 5 2 6 5 3 5 8 9 9 第2轮 1 1 3 4 2 5 5 3 ...
- 使用SqlDataReader对象从数据库中检索只读的数据。
SqlDataReader对象每次从查询结果中读取一行到内存中,对于sql数据库,如果只需要顺序读取,可以优先选择SqlDataReader,其对数据库的读取速度非常快. 调用SqlDataReade ...