Skip to content
This repository has been archived by the owner on Aug 1, 2020. It is now read-only.

Commit

Permalink
update segwit
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisLinn committed Apr 6, 2019
1 parent fe0c7e6 commit c2abc34
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 7 deletions.
34 changes: 33 additions & 1 deletion bitcoin/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,35 @@ OP_0 [A's signature] [B's or C's signature] [serialized redeem script]
__注意__:
签名顺序要和多签脚本中pubkey的顺序相同, 验签时会检查签名数量有否满足,然后虚拟机 逐个 按顺序 Verify(pubkey, msg, sig)


## Segregated Witness (SegWit) 隔离见证

1. 把脚本签名(scriptSig)信息从基本结构 (base block) 里拿出来,放在一个新的数据结构当中。做验证工作的节点和矿工也会验证这个新的数据结构里的脚本签名,以确保交易是有效的。

![segwit](/img/segwit.jpg)


当审核统计区块大小的时候。脚本签名大小不会被计算在内。

对于 __某些交易__ ,签名散列增长是平方增长的, 而不是线性增长的。Segwit 通过改变交易哈希签名的计算方式可以解决此问题,使得交易的每个字节只需要至多两次哈希。

__为什么不直接用大区块?__

其实这两个扩容方法都是可以采取,但是有一个先后问题。先后次序会很大程度影响到比特币的整个网络。那么为什么技术上要先上隔离见证,简单说来直接增大区块容量让下载全节点不适合于普通PC电脑,网络中越少的全节点其实不利于比特币安全。

2.

2.1. 防止了延展性攻击(malleability)。TxID 的计算方法使得任何人可以对交易做微小的改动,不会改变交易的内容,但是会改变TxID,这就是所谓的第三方延展性。之前那个原始交易记录会被认为是无效的交易而失败。不会造成双花,也不会对区块链造成破坏,但是对原始交易记录的发起者会造成困扰,因为如果拿着原始交易记录的哈希值找不到交易的成功记录。尤其是对于一些交易所,如果没有完整的内部日志,可能无法追溯交易记录,导致攻击者利用拼凑的交易记录先成功提币,再申诉说没有提到币,要求再次提币。

2.2 更好的实现 闪电网络 :闪电网络的具体实现需要创建一系列相互依赖的父子交易记录,需要先对子交易记录签名,然后将子交易记录交换后,再对父交易记录签名并广播。所以,有了隔离见证后,才能更完美的支持闪电网络。

2.3 花费未确认的交易: 如果 Alice 在交易1支付 Bob一些币,Bob 在交易2 使用收到的付款支付给Charlie,然后Alice的付款发生延展性修改,并用不同的txid确认, 那么交易2现在是无效的,而Charlie就不会被支付。如果Bob是值得信赖的,他会重新发出一笔交易给查理;但如果他不是,他可以简单地把这些比特币留给自己。

别的一些好处:

+ https://bitcoincore.org/en/2016/01/26/segwit-benefits/
+ https://bbs.huaweicloud.com/blogs/710256bf476611e89fc57ca23e93a89f

## Lightning Network

浏览器:
Expand Down Expand Up @@ -249,8 +278,11 @@ Revocable Sequence Maturity Contract (RSMC):[1] a contract used in Lightning to
- 希望赚交易费用,而闪电网络把大量小额交易都隔离开了

##### 闪电网络

see [Lightning Network](#lightning-network)

+ 主要支持者:Bitcoin Core
+ 建立在 [隔离见证](/blockchain/readme.html#segwit-%E9%9A%94%E7%A6%BB%E8%A7%81%E8%AF%81) 的基础上
+ 建立在 [隔离见证](#segregated-witness-segwit-%E9%9A%94%E7%A6%BB%E8%A7%81%E8%AF%81) 的基础上
* 理由:
- 扩大区块需要进行 [__硬分叉__](#%E7%A1%AC%E5%88%86%E5%8F%89) ,万一有的用户不升级钱包,就会产生对比特币的分裂,造成混乱;
- 如果区块变大,以后交易越来越多,普通人的电脑上根本就运行不起这么 __大的全节点钱包__ ,只有机构的电脑可以运行,就会导致比特币的中心化。
Expand Down
13 changes: 7 additions & 6 deletions blockchain/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,17 @@ __Block Header__
+ 如果给定一个 tx hash,最少还需要知道哪些信息才能确定该 tx 是否在一个block中
+

### [Coinbase](https://en.bitcoin.it/wiki/Coinbase)
### Coinbase

see [https://en.bitcoin.it/wiki/Coinbase](https://en.bitcoin.it/wiki/Coinbase)

挖矿类型交易(generation)的“输入”的内容。可包含任意信息,比如创始区块中包含的是:
```
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
```

扩展阅读: [比特币有哪几种交易类型?](/bitcoin/readme.md#transaction)


## GHOST rule
+ __GHOST (Greedy Heaviest-Observed Sub-Tree) rule/protocol__
+ Sompolinsky, Y., and Zohar, A. Accelerating Bitcoin’s transaction processing. fast money grows on trees, not chains. In Financial Cryptography (Puerto Rico, 2015).
Expand Down Expand Up @@ -241,13 +243,12 @@ Cosmos 的底层是由 Cosmos SDK 构建,Cosmos SDK 可以理解为一个更

### Interledger

## Segregated Witness (SegWit) 隔离见证
## Projects

Reduces the space required for transactions in a block and eliminates transaction malleability, which allows for significant blockchain pruning optimizations.
### Chain

## Projects
see [https://github.com/chain/chain](https://github.com/chain/chain)

### [Chain](https://github.com/chain/chain)
企业级的区块链平台架构,针对金融领域,金融机构可以在上面创建和发行数字资产。共识协议采用联邦拜占庭协议,支持多种数字资产,适合联盟链。

### OpenLedger
Expand Down
Binary file added img/segwit.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c2abc34

Please sign in to comment.