在解释扩容问题之前,必须要先解释吞吐量的概念。假设你在火车站等车,每趟火车间隔一小时,只能做10个人。一旦火车满载,第十一名乘客只能等待下一趟。与这个做类比,乘客代表交易,比特币或以太坊这样常见的区块链平台每秒平均可以处理大约10次交易。
delos区块链:给到你们的是1s最多打包1000笔交易并出块。
也就是说1s内,如果有1000个乘客上车,那么都一起拉走,1001等候
那问题来了,为什么不可以同1个人分别给1000个人转账(1000次请求),只能1000个人分别给1000个人转账(1000次请求)?
1、每次请求1个/transactions,会提交1笔交易,交易中包含[1个或多个私钥,1个或多个操作]。
2、delos会取第1个私钥生成地址,向chain获取nonce值。
3、如果短时间内并发发送请求,并且第1个私钥又相同,那么向chain获取的nonce相同。
4、nonce不允许相同,所以单用户不允许并发。
nonce不允许相同的理由现下面网址:
https://www.jianshu.com/p/e8e3820140e0
那么问题又来了,1个人可以同时给20个人转账(20个转账操作放到1笔交易,只请求1次)是允许的。那1个人给1000个人转账(1000个转账操作放到1笔交易中,只请求1次)为什么不行?
因为块的容量变大时,网络传输就慢了。
第一种最直接的方法是增加区块大小。回到火车类比,这意味着将火车的容量从10人增加到20人。这样,火车就可以在特定时间内运送更多的乘客,减少车站的拥挤。
比特币当前的区块大小1MB,提高到2MB可以使其每秒处理量增加一倍。区块越大,每秒处理量就越高。
但这在实践中是有问题的,假设你将块大小从1MB增加到1GB,当你创建块时,必须将其传送给网络中的其他人,而网络无法快速处理庞大的文件。就像你使用电子邮件,当你上传一个大文件时,邮箱会不接受。这就是增加区块大小的毛病,不能超越某个临界点,所以这种解决方案的能力是有限的。