【侧链】2-way federated peg

推出侧链有多种原因

  • 主链性能不够:侧链可以通过联盟链、DPOS等方式提高性能。并不是所有交易都需要那么高的安全性,对于普通小额交易,对安全性要求没那么高,为了降低交易费、减少延迟,可以用安全性、去中心化程,换取速度、低延迟等特性。
  • 主链不容易达成共识升级:由于 Bitcoin 主链托管了大笔资产,更新换代必然需要谨慎,即使一个功能绝对有必要添加,让整个社区达成功能升级的共识也非常之难。光是升级 segwit,Bitocin 社区就用了多年时间,要想在 bitcoin 主链添加 Confidential Transaction、ZK-SNAKRs 这类提高交易隐私性的功能,当然也不是随随便便就能添加的。而运行一条侧链添加功能则容易得多,即使出现安全事故,影响范围也仅限于侧链,而不会对主链造成影响。

侧链功能升级更加容易,而且不会影响货币的规模效应。反之,要想推出新功能,发布一条新的链是最简单的做法,但是 altcoin 的市场深度更浅,价格波动更加剧烈,而且割裂数字货币价值,不利于数字货币的健康发展。

那么主链和侧链如何互相转账呢

Blockstream公司提出通过2-way federated peg 实现主侧链之间的互相转账,通过多个集体构成的联盟共同监督和维护主侧链之间的转账。

负责监督和维护主侧链之间转账的个体称为 watchmen,他们需要同时运行 Bitcoin 节点和element 侧链。

小明将 BTC 转到侧链的过程

  1. 小明在主链发起交易,将 BTC 转到由多个 watchmen 控制的多重签名地址;
  2. watchmen 在 Bitcoin 主链看到这笔交易,并经过多个 block 的确认后,即在 element 侧链发行等量的 LBTC 到小明的地址。

可以看到,这个过程小明只需要在主链进行1次操作,侧链的操作则由watchmen自动完成。

watchmen需要在侧链证明这笔交易的存在,证明方式是在侧链创建一笔交易,将bitcoin主链的交易详情和mekle proof提交到侧链。

PROOF=$(b-cli gettxoutproof '''["'''$TXID'''"]''')
RAW=$(b-cli getrawtransaction $TXID)
CLAIMTXID=$(e1-cli claimpegin $RAW $PROOF)

我想之所以使用merkle proof证明交易,而不是简单的使用txid,是因为这样的话block signers(相当于侧链的矿工)只需要运行Bitcoin SPV节点即可以证明你交易的真实性,而不用运行Bitcoin全节点。

之后小明和小红可以脱离 Bitcoin 主链,在 element 侧链上转账。

小明将 LBTC 转到主链的过程

  1. 小明在侧链发起交易,将 LBTC 转到特定地址进行销毁;
  2. watchmen 在侧链看到这笔交易后,在 Bitcoin 主链创建一笔交易,从它们共同控制的多重签名地址将 BTC 转到小明的地址。

安全性

watchmen 负责主侧链之间的资产转移,这同时也意味它们控制着侧链资产的发行。这个过程的安全性至关重要,liquid 是第一条使用 elements 创建的侧链,由交易所、金融机构共同运行。关于这个过程的安全性我暂时还有疑问,我弄清楚之后再补上。

The Liquid Network’s members consist of some of the largest exchanges, trading desks, brokers, and financial institutions in the industry.
https://blockstream.com/liquid/

reference

  1. https://elementsproject.org/how-it-works
  2. https://elementsproject.org/blockchain-or-sidechain
  3. https://elementsproject.org/elements-code-tutorial/sidechain
  4. https://blockstream.com/strong-federations.pdf
  5. https://blockstream.com/sidechains.pdf

你可能感兴趣的:(【侧链】2-way federated peg)