proof of storage
科学的本质是哲学。哲学的追求有一个极:永恒。有两个底:变和不变。这两个哲学思想,就好比九阳神功和太极剑。学会之后遇山开路,遇水化桥,千变万化无所不通。
基于存储空间的区块链的存储证明和时空证明的算法,也是基于变和不变。目前已经存在的pow 和 pos的算法确实很厉害,不过不影响我们用新的思维去考虑问题。
本文推荐的存储证明和时空证明算法具备以下特点:
- 准确
- 快速
- 经济
- 永久性不可攻破
有以下场景:
方案1:
虽然解决了文件存储证明的问题,但是这种方式并不经济……
方案2:
方案2,解决了方案1的经济不划算问题,有一些小的隐患(A节点存储的内容太少,总有机会碰到B节点不是人为,而是磁盘分区损坏,B也不知道一块数据变了,但是整好A节点上那一个字节对上了,块里面其他地方的数据错了),不过A节点说还想再尝试一下其他的方案,A节点不想存储任何明文。
方案3:
最底层存储文件内容的哈希,从左往右是文件的0 ~ 4k、4k ~ 8k、8k ~ 12k、12k ~ 16k的哈希,第二层深度是x5=sha256(string(sha256(block1)) + string(sha256(block2)))
x6=sha256(string(sha256(block3)) + string(sha256(block4)))
B节点存储文件/home/dir/file1.txt、/home/dir/file1.txt.merkeltree。A节点存储/root/dir1/file1.txt.merkeltree。A节点获取到B节点上某一个块时,从树叶计算到树根(方案3到树叶上一层即可),哈希值一致则ok。
方案3,可以100%的确保不被人为或意外变更,只能在A文件属主获取文件时验证,A作为客户端不可能一直在下检测文件。而区块链做随巡检,不可能每次都把文件通过网络获取过来,区块链的io是宝贵的,尽量节省。因此方案3也不是特别满意。
方案4:
蒹葭苍苍,白露为霜。所谓伊人,在水一方。溯洄从之,道阻且长。溯游从之,宛在水中央。
蒹葭萋萋,白露未晞。所谓伊人,在水之湄。溯洄从之,道阻且跻。溯游从之,宛在水中坻。
实际编码时,根据巡检力度和合同期,可将6调整为15或者其他适合值。方案4我相对于方案3比较满意,可以作为区块链存储证明和时空证明的有效方法之一。
鲁迅说只要去挤一,总能挤出水分来。那么方案4没有问题吗? 问题是有的,单节点存储文件,就有磁盘损坏,节点挂掉,下线的风险。
方案5: