EOS出块时间

共识使用 DPOS + BFT 算法。需要至少 2/3+1 个节点的确认
每个节点产块 12个,所以需要 12块*(21节点2/3+1) = 1215 = 180块

一个区块都是在360多区块的时候才会被标识为不可逆状态
区块的确认分为两个阶段,第一个阶段是pre-commit阶段,该阶段需要接受2/3+1个节点的确认表明,超过2/3节点认可该区块。
但是此时并不意味着超过2/3的节点已经了解到这个2/3确认信息。因而再次需要2/3的commit签名确认过程。

侧链(sidechain)

侧链(sidechains)实质上不是特指某个区块链,而是指遵守侧链协议的所有区块链
元素链(Elements)就是这样一种侧链,所不同的是,它是由Blockstream公司,即侧链协议所提出的公司,所开发的一个侧链的参考实现。

比特币核心开发组,成立了BlockStream,拟实现商业化价值,提出侧链协议、把比特币转出比特币区块链、另行开发二代区块链

所谓“多种资产在不同区块链上转移”其实并不会实际发生。以比特币为例,侧链的运作机制是,将比特币暂时锁定在比特币区块链上,同时将辅助区块链上的等值数字货币解锁;当辅助区块链上的数字货币被锁定时,原先的比特币就被解锁。

侧链协议

侧链协议的目的是实现双向锚定(Two-way Peg),使得比特币可以在主链和侧链中互转(图)。
8d78fe18.png

双向锚定分为以下几个阶段:

  1. 发送锁定交易,把比特币锁定在主链上。
    由比特币持有者操作,发送一个特殊交易,把比特币锁定在区块链上。

    a815ad4b.png
  2. 等待一个确认期
    确认期的作用是等待锁定交易被更多区块确认,可防止假冒锁定交易和拒绝服务攻击,典型的等待时间是1-2天。

  3. 在侧链上赎回比特币

确认期结束后,用户在侧链上创建一个交易花掉锁定交易的输出,并且提供一个SPV工作量证明,输出到自己在侧链上的地址中去。该交易称为赎回交易,SPV工作量证明是指赎回交易所在区块的工作量证明。

  1. 等待一个竞争期
    竞争期的作用是防止双花。在此期间(1)赎回交易不会被打包到区块(2)新传输到侧链的比特币不能使用(3)如果有工作量更大的工作证明出现,即该赎回交易包括了比特币主链更大难度的SPV证明,则上一个赎回交易将被替换。竞争期结束后,该赎回交易将被打包到区块中,用户可以使用他的比特币。 从侧链转比特币到主链的过程也是如此,这就是侧链双向锚定协议。

对接”应用链”和”结算链”
侧链主要功能有:

  1. 结算链离链交易(类似微信及支付宝钱包之于银行账户,即闪电网络)
  2. 应用链的基础用户数据(包括用户账号、权限、代币账本)
  3. 应用链的运行承载(智能合约虚拟机、运行平台)

现存问题:

  1. 应用数据和结算数据在一个区块链上并存
  2. 多种应用数据在一个区块链上的混合并存。以太坊和 EOS 等,就是用一种链条覆盖结算链、侧链、应用链的全部功能
  3. 应用规模不足以保障区块链数据安全
  4. 任何应用运算都需要交等额手续费。(可以考虑根据运行时间,访问量,代码大小来收费)

侧链网络的具体实现,通过与主链共用底层分布式算力,实现现有网络节点的复用,

核心技术实现就两项,也就是是双向锚定(2WP)和联合挖矿

经济学定义:
所谓纳什均衡,指的是参与人的这样一种策略组合,在该策略组合上,任何参与人单独改变策略都不会得到好处。换句话说,如果在一个策略组合上,当所有其他人都不改变策略时,没有人会改变自己的策略,则该策略组合就是一个纳什均衡。

纳什均衡案例

囚徒困境
两个共谋犯罪的人被关入监狱,不能互相沟通情况。如果两个人都不揭发对方,则由于证据不确定,每个人都坐牢一年;若一人揭发,而另一人沉默,则揭发者因为立功而立即获释,沉默者因不合作而入狱十年;若互相揭发,则因证据确实,二者都判刑八年。

2d0568ca.png

此时有人会觉得双方都抵赖就好了,但问题是双方被隔离,都会怀疑对方会出卖自己以求自保。两个人都会这么想:假如对方坦白,此时如果我抵赖得坐10年监狱,如果我坦白才坐8年监狱;假如对方抵赖,此时如果我也抵赖会被判1年,如果我坦白可以被释放。综合以上考虑,不管对方坦白与否,对我而言都是坦白划算。此时最后的“纳什均衡”只能是两个人都坦白,共同被判8年刑期。

注:亚当·斯密的理论(“看不见的手”原理),在市场经济中,每一个人都从利己的目的出发,而最终全社会达到利他的效果。但是我们可以从“纳什均衡”中引出“看不见的手”原理的一个悖论:从利己目的出发,结果损人不利己,既不利己也不利他。

CSP 和 Actor 的区别

  • CSP进程通常是同步的(即任务被推送进Channel就立即执行,如果任务执行的线程正忙,则发送者就暂时无法推送新任务),Actor进程通常是异步的(消息传递给Actor后并不一定马上执行).
  • CSP中的Channel通常是匿名的, 即任务放进Channel之后你并不需要知道是哪个Channel在执行任务,而Actor是有“身份”的,你可以明确的知道哪个Actor在执行任务.
  • 在CSP中,我们只能通过Channel在任务间传递消息, 在Actor中我们可以直接从一个Actor往另一个Actor传输数据.
  • CSP中消息的交互是同步的,Actor中支持异步的消息交互.

REX proposal

上面是 BM(Daniel Larimer)的提案。

下面是关键部分的翻译和理解。

用户可以出租资源带宽,一个有效的租赁市场会保证资源以合理的价格供参与者使用,Token 的持有者可以出租 EOS 收取一定的费用,
并且出租的 EOS 没有任何损失的风险。

fa6d33f2.png 1597d2c5.png
阅读全文 »

公众号登录

公众号登录

图文排版

不可以直接使用 markdown 发布文章,需要转换成 html 之后操作。
对于引用的图片,需要先删掉,在上传到材料库,然后手动插入

代码排版

http://md.aclickall.com/
使用上面的地址,可以在左边输入 markdown,右边会生成预览。

eosio-cpp 是目前最新版本的工具,用来替代 eosiocpp
还有个 eosio_abigen 也废弃了,同样使用 eosio-cpp 来生成 abi 文件。

account_name 替换为 capi_name (直接替换)
groups group_table( _self, _self); 修改为 groups group_table( _self, _self.value);
N(some_name) 修改为 "some_name"_n

为了将侧链由概念转化成现实,Adam Back、Matt Corallo等比特币核心开发者共同发起成立了Blockstream公司,并在同年十月,发布了白皮书《Enabling Blockchain Innovations with Pegged Sidechains》,首次明确提出了侧链的概念及其协议实现方案。

侧链(sidechains)

侧链机制,简单的说,就是一种使货币在两条区块链间移动的机制。

侧链协议本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。其中第一个区块链通常被称为主区块链或者主链,每二个区块链则被称为侧链。最初,主链通常指的是比特币区块链,而现在主链可以是任何区块链。侧链协议被设想为一种允许数字资产在主链与侧链之间进行转移的方式,这种技术为开发区块链技术的新型应用和实验打开了一扇大门。

侧链协议侧链协议的目的是实现双向锚定(Two-way Peg),使得比特币可以在主链和侧链中互转。

比特币主链与侧链关系图双向锚定的几个阶段:

  1. 发送锁定交易,把比特币锁定在主链上。由比特币持有者操作,发送一个特殊交易,把比特币锁定在区块链上。
  2. 等待一个确认期确认期的作用是等待锁定交易被更多区块确认,可防止假冒锁定交易和拒绝服务攻击,典型的等待时间是1-2天。
  3. 在侧链上赎回比特币确认期结束后,用户在侧链上创建一个交易花掉锁定交易的输出,并且提供一个SPV工作量证明,输出到自己在侧链上的地址中去。该交易称为赎回交易,SPV工作量证明是指赎回交易所在区块的工作量证明。
  4. 等待一个竞争期竞争期的作用是防止双花。在此期间(1)赎回交易不会被打包到区块(2)新传输到侧链的比特币不能使用(3)如果有工作量更大的工作证明出现,即该赎回交易包括了比特币主链更大难度的SPV证明,则上一个赎回交易将被替换。竞争期结束后,该赎回交易将被打包到区块中,用户可以使用他的比特币。从侧链转比特币到主链的过程也是如此,这就是侧链双向锚定协议。

其具体实现方式可以分为以下几类

单一托管模式与联盟模式的最大优点是它们不需要对现有的比特币协议进行任何的改变。

单一托管模式

最简单的实现主链与侧链双向锚定的方法就是通过将数字资产发送到一个主链单一托管方(类似于交易所),当单一托管方收到相关信息后,就在侧链上激活相应数字资产。这个解决方案的最大问题是过于中心化。图1给出了以比特币为主链的单一托管模式的工作原理示意图:

962116e2.png

联盟模式

联盟模式是使用公证人联盟来取代单一的保管方,利用公证人联盟的多重签名对侧链的数字资产流动进行确认。在这种模式中,如果要想盗窃主链上冻结的数字资产就需要突破更多的机构,但是侧链安全仍然取决于公证人联盟的诚实度。图2给出了以比特币为主链的联盟模式的工作示意图:

202fe21e.png

SPV模式

SPV(Simplified Payment Verification)模式是最初的侧链白皮书《Enabling Blockchain Innovations with Pegged Sidechains》中的去中心化双向锚定技术最初设想。SPV是一种用于证明交易存在的方法,通过少量数据就可以验证某个特定区块中交易是否存在。

在SPV模式中,用户在主链上将数字资产发送到主链的一个特殊的地址,这样做会锁定主链的数字资产,该输出仍然会被锁定在可能的竞争期间内,以确认相应的交易已经完成,随后会创建一个SPV证明并发送到侧链上。此刻,一个对应的带有SPV证明的交易会出现在侧链上,同时验证主链上的数字资产已经被锁住,然后就可以在侧链上打开具有相同价值的另一种数字资产。

这种数字资产的使用和改变在稍后会被送回主链。当这种数字资产返回到主链上时,该过程会进行重复。它们被发送到侧链上锁定的输出中,在一定的等待时间后,就可以创建一个SPV证明,来将其发送回主区块链上,以解锁主链上的数字资产。SPV模式存在的问题是需要对主链进行软分叉。图3给出了以比特币主链的SPV模式的工作流程示意图:

774cb4ec.png

驱动链模式

驱动链概念是由Bitcoin Hivemind创始人Paul Sztorc提出的。在驱动链中,矿工作为‘算法代理监护人’,对侧链当前的状态进行检测。换句话说,矿工本质上就是资金托管方,驱动链将被锁定数字资产的监管权发放到数字资产矿工手上,并且允许矿工们投票何时解锁数字资产和将解锁的数字资产发送到何处。矿工观察侧链的状态,当他们收到来自侧链的要求时,他们会执行协调协议以确保他们对要求的真实性达成一致。诚实矿工在驱动链中的参与程度越高,整体系统安全性也就越大。如同SPV侧链一样,驱动链也需要对主链进行软分叉。图4给出了以比特币为主链的驱动链模式的工作流程示意图:

f10a83fa.png

混合模式

上述所有的模式都是对称的,而混合模式则是将上述获得双向锚定的方法进行有效的结合的模式。由于主链与侧链在实现机制存在本质的不同,所以对称的双向锚定模型可能是不够完善的。混合模式是在主链和侧链使用不同的解锁方法,例如在侧链上使用SPV模式,而在主链网络上则使用驱动链模式。同样,混合模式也需要对主链进行软分叉。

典型范例

目前,比较著名的侧链包括基于比特币网络的侧链BTC Relay、Rootstock的Liquid,以及非比特币的侧链如Lisk和国内的Asch等。

BTC Relay是由ConsenSys的推出的基于以太坊区块链的智能合约的侧链解决方案。BTC Relay把以太坊网络与比特币网络以一种安全去中心化的方式连接起来。BTC Relay通过使用以太坊的智能合约功能允许用户在以太坊区块链上验证比特币交易。以太坊DApp开发者可以从智能合约向BTC Relay进行API调用来验证比特币网络活动。

Liquid是Blockstream的开源侧链项目,使用了比特币双向锚定技术,Liquid目的是实现使得比特币可以在主链和侧链中互转,旨在提高隐私性、降低成本、加速交易所和经纪商之间的价值转移及结算流程。

Lisk是一个致力于为JavaScript开发者提供创建分布式应用程序的区块链平台,由德国的Max Kordek和Oliver Beddows于2016年初成立。它把每一个分布式应用程序都会在其自己且独一无二的区块链,也就是侧链上运行,这种封装使得主要的Lisk的主网高效,迅速和精简Asch是国内推出的一个基于侧链技术的去中心化应用平台,由单青峰于2016年初成立。Asch平台提供的服务包括一个主链和一套应用软件开发工具包。Asch的主链主要负责构建基础设施、应用间的数据共享以及资产路由,应用软件开发工具包内置了侧链协议,主要负责构建具体的应用,通过侧链协议可以与主链进行资产互通。

几点说明

  1. 比特币在侧链里流通时还是比特币,侧链的比特币与主链的比特币通常是1比1的汇率,也可能有预定的汇率。
  2. 侧链的挖矿不能产出比特币,侧链可能有自己的币,也可能没有自己的币,仅是为了比特币的流通。
  3. 侧链可能是对等的和非对等的。对等的侧链独立存在,其也可成为主链。主侧是相互的,如果有足够的需求,比特币也可成为莱特币的侧链。非对等侧链依赖主链而存在。
  4. 去中心化没改变,每个人或公司都可创建自己的比特币侧链,用户和矿工认同的会成为主流。
  5. 当然侧链要有足够的算力保证侧链的可靠和安全。
  6. 侧链白皮书提出了清晰的侧链框架,具体侧链怎么实现容许设计者自由发挥。

参考

插件

// 图标插件
Material Icon Theme
// 代码片段
Project Snippets
括号配对着色(Bracket Pair Colorizer) 和 彩虹缩进(Indent Rainbow)


build with make

command+shift+B

When first run need create a task.json file, and select other template

格式化

Mac: Shift + Option + F
阅读全文 »

上个笔记我们搭建好了开发环境,这次我们来写一个简单的合约。
写之前需要创建 wallet 和账户。

首先看一下都有哪些参数可用

cleos wallet

本篇笔记涉及到的内容:

  1. 创建 wallet
  2. 创建账户
  3. 创建合约
  4. 发布合约
  5. 写测试案例
阅读全文 »