区块链达成共识要解决的问题

我在学习时的有以下疑问。

目录

1 怎么定义一单交易

1.1 处理反复花费同一笔钱的问题?

1.2 钱是怎么产生的?

1.3 交易过程是怎么样的?

1.3.1 假如某一次交易没有完全消耗所有的钱,要修改前面的区块把现在有的钱订正余额吗?

1.3.2 那么按照上面的说法,就是输入的总量=输出的总量?

1.3.3 为什么需要这一笔交易费?

1.4 怎么查询余额?

1.5 怎么去验证是A的公钥,而不是有人顶替A和B做交易呢?

1.7 怎么保证大家都认可这一笔交易?

1.7.1 假如有恶意结点并且超过半数怎么办?

1.7.2 既然不能结点树作为投票标准,那么什么作为投票标准?

2 在并发的情况下可能出现的情况

2.1 在同一时间假如有两个结点可以提供可靠的nonce那么怎么办

2.2 假如这么巧两个分支正好同时又接上了两个呢?

2.3 假如有一个交易处理特别特别慢,原来的链上已经添加了新的交易记录a和新的交易记录b,但是慢交易还是用之前的取hash,能插到新的交易记录a和新的交易记录b前面吗?

2.3.1 慢交易是合法的那么他该何去何从?

 


1 怎么定义一单交易

生产者和消费者+生产者的签名

例如区块2的生产者是A消费者是B和A。

1.1 处理反复花费同一笔钱的问题?

反复花费同一笔钱也成为双花攻击,花是花费的意思

通过图中的箭头(指针)指向每一笔交易,以及交易的签名判定是同一笔钱。例如我是D,我要伪造一笔A给D的交易,因为我没有A的密钥所以签不了名,这笔交易就是非法的。UTXO这一个数据结构是用于存放没有花费的钱,例如交易A在UTXO中会给出交易A产生这个输入的hash值,以及它是第几个交易。

上图包括了4各种状态的交易,我决定用问题&解决方法的模式给大家介绍。

1.2 钱是怎么产生的?

看区块1,第一笔称之为铸币它是由挖矿作为奖励产生的。

1.3 交易过程是怎么样的?

看区块3,B给C转了5块钱,给D转了2块钱,此时B把他仅有的7块钱消耗干净,最后签名。

1.3.1 假如某一次交易没有完全消耗所有的钱,要修改前面的区块把现在有的钱订正余额吗?

不需要修改前面的区块,看第2个区块,A给B转了7块钱,剩下的钱会转回给自己,要保证每一次转钱都把钱花的干干净净。

1.3.2 那么按照上面的说法,就是输入的总量=输出的总量?

不是的,因为每一笔交易都有交易费,所以输出是略微大于输出的。

1.3.3 为什么需要这一笔交易费?

对于我来说帮你记一笔交易并没有好处,因为要消耗我的算力,我完全可以只记自己的帐,搁家自扫门前雪。

1.4 怎么查询余额?

看区块2和区块3,区块3的B指向区块2的B不断往前回溯到前面的区块,最后判断余额是否足够。看区块4,可以发现C的余额是不够支付给E所以E区块4不可以添加链上。

1.5 怎么去验证是A的公钥,而不是有人顶替A和B做交易呢?

例如第一笔交易,提供A的公钥hash值要和铸币交易时A的hash值一致。《区块链与Merkle tree》第1.2介绍如何防止篡改

1.7 怎么保证大家都认可这一笔交易?

选用投票机制,过半数的结点认可就可以认同这一笔交易并添加到区块链上。

1.7.1 假如有恶意结点并且超过半数怎么办?

假如是投票机制,因为是去中心化的,只要生产一对公私钥就相当于注册了账户,当不断生成公私钥,新建账户那当账户超过半数结点,那么能不能添加到链上的生杀大权就留给了恶意结点,这就是女巫攻击。

1.7.2 既然不能结点树作为投票标准,那么什么作为投票标准?

算力作为投票的标准,谁的算力强就掌握了投票权,假如在单位时间里可以试10个随机数别人只能试一个随机数,你的投票权就比别人高。

2 在并发的情况下可能出现的情况

2.1 在同一时间假如有两个结点可以提供可靠的nonce那么怎么办

看谁的后面新增一个区块,假如新增了一个区块就是指认同了前一个区块。

2.2 假如这么巧两个分支正好同时又接上了两个呢?

那就要看往后谁的分支更长,选用最长链。

2.3 假如有一个交易处理特别特别慢,原来的链上已经添加了新的交易记录a和新的交易记录b,但是慢交易还是用之前的取hash,能插到新的交易记录a和新的交易记录b前面吗?

不可以,以为牵一发而动后半身《区块链与Merkle tree》第1.2介绍如何防止篡改,所以即使你的交易是合法的但是也不能插到交易a和交易b前面英文这样不符合插入到最长链而且还有a和b回滚这是很不划算的。

2.3.1 慢交易是合法的那么他该何去何从?

它会重新到最后面变成新的区块,总会有善意的结点去接纳它让它添加到链上。

 

发布了46 篇原创文章 · 获赞 75 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38875300/article/details/102919473